Создать два списка из одного списка в Python? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть один список строк, который содержит числа, разделенные запятой. Я хочу создать два списка целых чисел из него. То есть:

l=["23,2","11,2","12,7"]

Что я хочу сделать, это:

l1=[23,11,12]
l2=[2,2,7]

Буду признателен за любую помощь.

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Можете ли вы использовать zip(), чтобы разорвать его на части, разделив запятую каждую строку запятыми , и map каждой подстрокой в ​​int`.

l = ["23,2","11,2","12,7"]
l1, l2 = zip(*[map(int, x.split(',')) for x in l])
# l1 = (23, 11, 12)
# l2 = (2, 2, 7)
0 голосов
/ 03 июля 2018

Путь Ajax1234 очень питоничен и, несомненно, лучший. Но, может быть, это немного проще понять, если вы плохо знакомы с языком. Используется сращивание:

from itertools import chain

l=["23,2","11,2","12,7"]
l = [x.split(',') for x in l] #Split list elements by comma.
l = list(chain.from_iterable(l)) #Get rid of tuples.
list1 = l[::2] #Take every even indexed element, including 0.
list2 = l[1::2] #Takes every odd indexed element.

Выход:

[23, 11, 12]
[2, 2, 7]

Здесь - ссылка на того, кто объясняет это лучше.

0 голосов
/ 03 июля 2018

Вы можете использовать zip:

l=["23,2","11,2","12,7"]
l1, l2 = [list(d) for d in zip(*[[int(i) for i in c.split(',')] for c in l])]

Выход:

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