当前位置:  开发笔记 > 编程语言 > 正文

从python中的列表中提取数组

如何解决《从python中的列表中提取数组》经验,为你挑选了3个好方法。

如果我有这样的列表:

>>> data = [(1,2),(40,2),(9,80)]

如何提取两个列表[1,40,9]和[2,2,80]?当然我可以自己迭代并提取数字但我猜有更好的方法吗?



1> 小智..:

解压缩操作是:

In [1]: data = [(1,2),(40,2),(9,80)]
In [2]: zip(*data)
Out[2]: [(1, 40, 9), (2, 2, 80)]

编辑:您可以在分配时分解结果列表:

In [3]: first_elements, second_elements = zip(*data)

如果你真的需要列表作为结果:

In [4]: first_elements, second_elements = map(list, zip(*data))

为了更好地理解为什么这有效:

zip(*data)

相当于

zip((1,2), (40,2), (9,80))

结果列表中的两个元组是根据zip()参数的第一个元素和zip()参数的第二个元素构建的.



2> unwind..:

列表理解除了一天:

first = [x for (x,y) in data]
second = [y for (x,y) in data]



3> 小智..:

还有

In [1]: data = [(1,2),(40,2),(9,80)]
In [2]: x=map(None, *data)
Out[2]: [(1, 40, 9), (2, 2, 80)]
In [3]: map(None,*x)
Out[3]: [(1, 2), (40, 2), (9, 80)]

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有