Я хочу, чтобы разбить список ниже:Расщепление Список Python
my_list = [(55, 22), (66, 33), (77, 44)]
Я попытался:
a, b = my_list
Это не сработало.
Что мне нужно:
a = [55,66,77]
b = [22,33,44]
Я ищу самый простой и легкий способ.
Я хочу, чтобы разбить список ниже:Расщепление Список Python
my_list = [(55, 22), (66, 33), (77, 44)]
Я попытался:
a, b = my_list
Это не сработало.
Что мне нужно:
a = [55,66,77]
b = [22,33,44]
Я ищу самый простой и легкий способ.
In [18]: L = [(55, 22), (66, 33), (77, 44)]
In [19]: a,b = zip(*L)
In [20]: a
Out[20]: (55, 66, 77)
In [21]: b
Out[21]: (22, 33, 44)
ожидал бы смысл zip (* L) – jean
Вам нужно сделать following-
вa, b = zip(*my_list)
Method-1, используя почтовый индекс и карта:
a, b = map(list, zip(*my_list)) #this returns 2 lists
a
[55, 66, 77]
b
[22, 33, 44]
Здесь вместо того, чтобы использовать только zip(*my_list)
, я использовал map
вдоль с zip
, чтобы получить 2 списка вместо двух кортежей, как задал ОП.
Объяснение zip (*): Эта функция принимает две коллекции равной длины и объединяет их в пары. Если мы используем это на 2 списка, мы получаем следующее:
a1 = [1,2,3]
a2 = [4,5,6]
a3 = zip(a1,a2)
[(1, 4), (2, 5), (3, 6)]
Теперь, если вам нужно отменить объединить их, вы можете использовать zip()
снова, потому что zip
является его собственной инверсией, но вам нужно использовать специальный *
оператор , Оператор *
используется для распаковки значений.
a4,a5 = zip(*a3)
a4
(1, 2, 3) #returns a tuple though
a5
(4, 5, 6) #returns a tuple though
Метод-2 Список Постижение:
a = [x[0] for x in my_list]
b = [x[1] for x in my_list]
a
[55, 66, 77]
b
[22, 33, 44]
Здесь мы используем список понимание для создания двух списков.
Я предлагаю вам использовать 1-й метод.
Вместо этого вы используете почтовый индекс, вы можете использовать цикл для перебора кортежей в списке
Проверьте этот фрагмент кода
first_element_list =list()
>>> second_element_list = list()
>>> for i in my_list:
... first_element_list.append(i[0])
... second_element_list.append(i[1])
ИЛИ
first_element_list =list()
second_element_list = list()
[first_element_list.append(i[0]) for i in my_list]
[second_element_list.append(i[1]) for i in my_list]
поиска для 'zip' в документация. – thefourtheye
@thefourtheye не знаю, хотя ... – jean