将列表的第一部分和第二部分拆分为两个子列表



我面临下面给出的问题,我想将第0个元素和第1个元素分隔在两个单独的列表中。例如,我有一份清单

a = [[1, 2], [3,4], [5,6], [7,8]]

我想要两个清单,比如:

a0 = [1,3,5,7]
a2 = [2,4,6,8]

有人能帮我吗?

您可以使用zip

a = [[1, 2], [3, 4], [5, 6], [7, 8]]
a = [[*x] for x in zip(*a)]
print(a[0], a[1]) # [1, 3, 5, 7] [2, 4, 6, 8]

你可以这样做-

a = [[1, 2],[3,4],[5,6],[7,8]]
a0 = []
a2 = []
for i in a:
a0.append(i[0])
a2.append(i[1])
print(a0)
print(a2)

使用列表理解:

a = [[1, 2],[3,4],[5,6],[7,8]]
a0 = [x[0] for x in a]
a2 = [x[1] for x in a]
print(a0)  # [1, 3, 5, 7]
print(a2)  # [2, 4, 6, 8]
a = [[1, 2],[3,4],[5,6],[7,8]]
a0 = []
a1 = []
for x in a:
a0.append(x[0])
a1.append(x[1])

使用chain来压平列表,然后计算中间索引,然后从中间索引将其拆分为两个列表

In [1]: from itertools import chain
In [2]: a = [[1, 2],[3,4],[5,6],[7,8]]
In [3]: flat = list(chain.from_iterable(a))
In [4]: flat
Out[4]: [1, 2, 3, 4, 5, 6, 7, 8]
In [5]: middle = len(flat) // 2
In [6]: first_half = flat[:middle]
In [7]: second_half = flat[middle:]
In [10]: first_half
Out[10]: [1, 2, 3, 4]
In [11]: second_half
Out[11]: [5, 6, 7, 8]

您可以尝试以下代码

import numpy as np    
a = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
np.array(a).T.tolist()

以形式给出

[[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]

最新更新