2015-06-14 5 views
-3

Я хочу, чтобы разбить список ниже:Расщепление Список Python

my_list = [(55, 22), (66, 33), (77, 44)] 

Я попытался:

a, b = my_list 

Это не сработало.

Что мне нужно:

a = [55,66,77] 
b = [22,33,44] 

Я ищу самый простой и легкий способ.

+1

поиска для 'zip' в документация. – thefourtheye

+0

@thefourtheye не знаю, хотя ... – jean

ответ

3
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) 
+0

ожидал бы смысл zip (* L) – jean

1

Вам нужно сделать following-

в
a, b = zip(*my_list) 
2

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-й метод.

0

Вместо этого вы используете почтовый индекс, вы можете использовать цикл для перебора кортежей в списке

Проверьте этот фрагмент кода

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] 
Смежные вопросы