假设我有一个这样的列表:
[[1, 2], [2, 3], [5, 4]]
我想要的是上面列表中的两个不同列表,其中第一个元素在一个列表中,第二个元素在另一个列表中。
结果如下:
[1,2,5] and [2,3,4]
有没有办法通过 列表拼接 来实现?
答案 0 :(得分:2)
使用zip()
配对输入列表的元素:
lista, listb = zip(*inputlist)
*
将inputlist
中的元素应用为单独的参数,就像您将zip()
称为zip([1, 2], [2, 3], [5, 4])
一样。 zip()
获取每个参数的第一个元素并将它们一起返回,然后返回第二个元素,等等。
这会产生元组,而不是列表,但这很容易解决:
lista, listb = map(list, zip(*inputlist))
演示:
>>> inputlist = [[1, 2], [2, 3], [5, 4]]
>>> zip(*inputlist)
[(1, 2, 5), (2, 3, 4)]
>>> lista, listb = map(list, zip(*inputlist))
>>> lista
[1, 2, 5]
>>> listb
[2, 3, 4]
答案 1 :(得分:1)
如何使用numpy
数组?
import numpy as np
np.array(myList).transpose()
# array([[1, 2, 5],
# [2, 3, 4]])
或
np.array(myList)[:, 0]
# array([1, 2, 5])
np.array(myList)[:, 1]
# array([2, 3, 4])