繁体   English   中英

将元组列表划分为多个列表的更简洁方法

[英]Cleaner way of dividing a list of tuples into multiple lists

标题是不言自明的,是否有一行表达式可以做到这一点?

可重现的例子:

Data = [(21,1,2000), (30,0,1991), (27,0,1994)]

age = [el[0] for el in Data]
sex = [el[1] for el in Data]
birth = [el[2] for el in Data]

print(age, sex, birth)

使用zip

age, sex, birth = zip(*Data)  # tuple

# OR

age, sex, birth = map(list, zip(*Data))  # list
>>> age
[21, 30, 27]

>>> sex
[1, 0, 0]

>> birth
[2000, 1991, 1994]

对@Corralien 解决方案稍作修改,要在list而不是在tuple获得结果,请使用mapzip一起获得结果

Data = [(21,1,2000), (30,0,1991), (27,0,1994)]
age, sex, birth = map(list, zip(*Data))
print(age, sex, birth, sep ='\n')

输出

[21, 30, 27] # age
[1, 0, 0] # sex
[2000, 1991, 1994] # birth
# You can do this by combining zip() with map() :

Data = [(21,1,2000), (30,0,1991), (27,0,1994)]
result = list(map(list, zip(*Data)))
print(result) 
# [[21, 30, 27], [1, 0, 0], [2000, 1991, 1994]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM