Possible Duplicate:
A Transpose/Unzip Function in Python

我有一个 list ,看起来是这样的:

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

我想把这个列表分成两个列表.

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')

Edit:请注意,zip(*iterable)是它自己的倒数:

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

当解包为两个列表时,这将变成:

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

rocksportrocker建议添加.

Python相关问答推荐

在IIS中运行的FastAPI-获取权限错误:[Win错误10013]试图以其访问权限禁止的方式访问插槽

螺旋桨图上意外颠倒的次y轴

零填充2D数组上的Numpy切片

我可以使用极点优化这个面向cpu的pandas代码吗?

如何判断LazyFrame是否为空?

绘制系列时如何反转轴?

使用Python和PRNG(不是梅森龙卷风)有效地生成伪随机浮点数在[0,1)中均匀?

剧作家Python:expect(locator).to_be_visible()vs locator.wait_for()

通过优化空间在Python中的饼图中添加标签

使用numpy提取数据块

点到面的Y距离

为什么符号没有按顺序添加?

numpy卷积与有效

如何从pandas的rame类继承并使用filepath实例化

利用Selenium和Beautiful Soup实现Web抓取JavaScript表

什么是最好的方法来切割一个相框到一个面具的第一个实例?

如何在Python中使用另一个数据框更改列值(列表)

为什么'if x is None:pass'比'x is None'单独使用更快?

交替字符串位置的正则表达式

如何在海上配对图中使某些标记周围的黑色边框