Вытягивание определенных частей нескольких строк, расположенных в массиве. - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь получить первое число в записи (wins-loss-ties) для каждой записи, которая хранится в массиве.Например:

Массив может быть следующим: [2-2-3, 4-5-2, 1-3-8].

Учитывая, что я хочу получить всезначения для количества побед и назначения их новому массиву, массив, который я хотел бы закончить, является следующим [2, 4, 1].

как я могу сделать это в моем коде Python?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Попробуйте:

arr = ['2-2-3', '4-5-2', '1-3-8']
result = [s.split('-')[0] for s in arr]

Объяснение:

[s for s in arr]
# output: ['2-2-3', '4-5-2', '1-3-8']

[s.split('-') for s in arr]
# output: [['2', '2', '3'], ['4', '5', '2'], ['1', '3', '8']]

[s.split('-')[0] for s in arr]
# output: ['2', '4', '1']
0 голосов
/ 12 декабря 2018
result = next(zip(*[(2,2,3), (4,5,2), (1,3,8)]))

Или, если записи на самом деле являются строками:

result = next(zip(*(data.split('-') for data in ['2-2-3', '4-5-2', '1-3-8'])))

Объяснение:

>>> list(zip(*[(2,2,3), (4,5,2), (1,3,8)]))
[(2, 4, 1), (2, 5, 3), (3, 2, 8)]

Вы хотите получить первый элемент, чтобы вы могли сделать list(zip(*[(2,2,3), (4,5,2), (1,3,8)]))[0], но в этом нет необходимости, поскольку zip создает свои возвращаемые значения на лету и не вычисляет их все сразу (так что это не тратит память), поэтому вы можете заставить его генерировать и возвращать только первое значение с next(zip(...)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...