在Python中将一个二维数组或列表拆分成两个一维列表

9
你有一个类似以下的二维数字列表:
x = [[1,2],[3,4],[5,6],[7,8],[9,10],[11,12],[13,14],[15,16],[17,18]]

您需要将其分成两个列表,使您可以在一个列表中获取第一列中的数字,另一个列表中获取第二列中的数字:

[1,3,5,7,9,11,13,15,17] [2,4,6,8,10,12,14,16,18]

如何在Python中实现这个功能?

我发出这个问题是因为我找不到一个简单的答案。 稍后我会回答这个问题。

3个回答

14

使用zip的理想情况是:

>>> x = [[1,2],[3,4],[5,6],[7,8],[9,10],[11,12],[13,14],[15,16],[17,18]]

#       v unpack `x` list
>>> zip(*x)
[(1, 3, 5, 7, 9, 11, 13, 15, 17), (2, 4, 6, 8, 10, 12, 14, 16, 18)]

返回值是包含两个元组的列表。为了将每个 tuple 存储到变量中,您可以执行以下操作:

>>> a, b = zip(*x)

2
x_1 = [i[0] for i in x]
x_2 = [i[1] for i in x]

1
In [27]: x = [[1,2],[3,4],[5,6],[7,8],[9,10],[11,12],[13,14],[15,16],[17,18]]

In [28]: first, second = zip(*x)

In [29]: first
Out[29]: (1, 3, 5, 7, 9, 11, 13, 15, 17)

In [30]: second
Out[30]: (2, 4, 6, 8, 10, 12, 14, 16, 18)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接