将成对的列表/元组拆成两个列表/元组

Breixo:

可能重复:
Python中的转置/解压缩函数

我有一个看起来像这样的列表:

list = (('1','a'),('2','b'),('3','c'),('4','d'))

我想将列表分为2个列表。

list1 = ('1','2','3','4')
list2 = ('a','b','c','d')

我可以用以下方法做到这一点:

list1 = []
list2 = []
for i in list:
   list1.append(i[0])
   list2.append(i[1])

但我想知道是否有更优雅的解决方案。

水果和蔬菜:
>>> source_list = ('1','a'),('2','b'),('3','c'),('4','d')
>>> list1, list2 = zip(*source_list)
>>> list1
('1', '2', '3', '4')
>>> list2
('a', 'b', 'c', 'd')

编辑:请注意,这zip(*iterable)是它自己的逆:

>>> list(source_list) == zip(*zip(*source_list))
True

当分解为两个列表时,它将变为:

>>> list1, list2 = zip(*source_list)
>>> list(source_list) == zip(list1, list2)
True

Rocksportrocker建议添加。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章