我有许多2元组的列表。 我想将列表拆分为两个列表,一个列表包含列表中所有元组的第一个元素,另一个列表包含所有元组的第二个元素。我想知道如何有效地做到这一点?谢谢!
例如,我有一个列表y
:
>>> y = [('ab',1), ('cd', 2), ('ef', 3) ]
>>> type(y)
<type 'list'>
我希望获得两个列表['ab', 'cd', 'ef']
和[1, 2, 3]
。
答案 0 :(得分:28)
a,b = zip(*y)
就是你所需要的......
或者如果你需要它们作为列表而不是元组
a,b = map(list,zip(*y))
答案 1 :(得分:6)
>>> y = [('ab', 1), ('cd', 2), ('ef', 3)]
>>> a,b = [list(c) for c in zip(*y)]
>>> a
['ab', 'cd', 'ef']
>>> b
[1, 2, 3]
>>>
答案 2 :(得分:5)
*
参数解包的zip将为您提供元组:
>>> a, b = zip(*y)
>>> a
('ab', 'cd', 'ef')
>>> b
(1, 2, 3)
如果您需要列表,可以使用map:
>>> a, b = map(list, zip(*y))
>>> a
['ab', 'cd', 'ef']
>>> b
[1, 2, 3]
答案 3 :(得分:0)
试试这个:
def get_list(tuples):
list1 = []
list2 = []
for i in tuples:
list1.append(i[0])
list2.append(i[1])
return list1, list2
y = [('ab',1), ('cd', 2), ('ef', 3) ]
letters, numbers = get_list(y)
答案 4 :(得分:0)
一种方法是首先将列表转换为临时字典,然后分配键和键。临时字典的值分为两个列表
y = [('ab', 1), ('cd', 2), ('ef', 3)]
temp_d = dict(y)
list1 = temp_d.keys()
list2 = temp_d.values()
print list1
print list2
答案 5 :(得分:0)
l1 = []
l2 = []
for i in y:
l1.append(i[0])
l2.append(i[1])
L1 ['ab','cd','ef'] L2 [1,2,3]
将每个值附加到另一个