Python 如何将2元组列表拆分为两个列表?
我有很多2元组的列表。 我想把列表分成两个列表,一个列表由列表中所有元组的第一个元素组成,另一个列表由所有元组的第二个元素组成。我想知道如何有效地做到这一点?谢谢 例如,我有一个列表Python 如何将2元组列表拆分为两个列表?,python,list,Python,List,我有很多2元组的列表。 我想把列表分成两个列表,一个列表由列表中所有元组的第一个元素组成,另一个列表由所有元组的第二个元素组成。我想知道如何有效地做到这一点?谢谢 例如,我有一个列表y: >>> y = [('ab',1), ('cd', 2), ('ef', 3) ] >>> type(y) <type 'list'> y=[('ab',1),('cd',2),('ef',3)] >>>类型(y) 我希望得到两个列表['ab',cd','ef
y
:
>>> y = [('ab',1), ('cd', 2), ('ef', 3) ]
>>> type(y)
<type 'list'>
y=[('ab',1),('cd',2),('ef',3)]
>>>类型(y)
我希望得到两个列表['ab',cd','ef']
和[1,2,3]
使用和一个:
是你所需要的一切
或者如果您需要它们作为列表而不是元组
a,b = map(list,zip(*y))
使用*
参数解包将为您提供元组:
>>> a, b = zip(*y)
>>> a
('ab', 'cd', 'ef')
>>> b
(1, 2, 3)
如果您需要列表,您可以在上面使用:
试试这个:
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)
一种方法是首先将列表转换为临时字典,然后将临时字典的键和值分配到两个列表中
y = [('ab', 1), ('cd', 2), ('ef', 3)]
temp_d = dict(y)
list1 = temp_d.keys()
list2 = temp_d.values()
print list1
print list2
将每个值附加到另一个我认为将其解包到a、b将自动将每个值转换到列表中。。。例如:
a,b=zip(*[(1,2),(3,4)];印刷品(a);印刷品(b)代码>@JoranBeasley-不,它们将是元组。啊,明白了。。。错过了那场比赛,因为他们的顽强。内置的zip
可能会更快,但请注意,这只适用于Python2.x。在Python3.x中,dict.keys
和dict.values
返回。我不知道。如何使用此技术修改代码?需要显式地将视图对象转换为列表。换句话说,您将执行此操作list1=list(temp\u d)
,然后执行此操作list2=list(temp\u d.values())
。请注意,在第一个示例中,我删除了对dict.keys
的调用。它不再需要,因为迭代字典会产生它的键。最后,只有在使用Python3.x时才需要这样做。在Python2.x中,您当前的代码可以正常工作,因为dict.keys
和dict.values
返回列表。[Python新手]哇!这比预期的要容易:)
>>> a, b = map(list, zip(*y))
>>> a
['ab', 'cd', 'ef']
>>> b
[1, 2, 3]
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)
y = [('ab', 1), ('cd', 2), ('ef', 3)]
temp_d = dict(y)
list1 = temp_d.keys()
list2 = temp_d.values()
print list1
print list2
l1 = []
l2 = []
for i in y:
l1.append(i[0])
l2.append(i[1])
l1
['ab', 'cd', 'ef']
l2
[1, 2, 3]