如何使用第一个列表的相应元素创建两个不同的列表?

时间:2016-07-01 16:56:23

标签: python python-2.7

假设我有一个这样的列表:

[[1, 2], [2, 3], [5, 4]]

我想要的是上面列表中的两个不同列表,其中第一个元素在一个列表中,第二个元素在另一个列表中。

结果如下:

[1,2,5] and [2,3,4]

有没有办法通过 列表拼接 来实现?

2 个答案:

答案 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])