合并具有多个行和列的两个列表

时间:2017-09-27 16:42:20

标签: python-3.x list matrix multiple-columns

您好我有以下两个名单:

list1 = [[(10.0, 10.0, 0.0), (90.0, 10.0, 0.0), (90.0, 90.0, 0.0), (10.0, 90.0, 0.0)]]
list2 = [[(15.0, 7.0, 0.0), (40.0, 15.0, 0.0), (20.0, 30.0, 0.0), (11.0, 67.0, 0.0)]]

如何合并它们以便显示:

10.0, 10.0, 0.0, 15.0, 7.0, 0.0
90.0, 10.0, 0.0, 40.0, 15.0, 0.0
90.0, 90.0, 0.0, 20.0, 30.0, 0.0
10.0, 90.0, 0.0, 11.0, 67.0, 0.0

如果尝试了不同的解决方案,但总是以错误或错误的表示结束。是否还有一种方法可以分别对待每一个元素?也许有索引?

1 个答案:

答案 0 :(得分:1)

使用numpy模块,内置zip()itertools.chain.from_iterable()个功能:

import itertools, numpy as np

list1 = [[(10.0, 10.0, 0.0), (90.0, 10.0, 0.0), (90.0, 90.0, 0.0), (10.0, 90.0, 0.0)]]
list2 = [[(15.0, 7.0, 0.0), (40.0, 15.0, 0.0), (20.0, 30.0, 0.0), (11.0, 67.0, 0.0)]]

chain = list(list(itertools.chain.from_iterable(i)) for i in zip(list1[0], list2[0]))
arr = np.array(chain, dtype=float)

print(arr)

输出:

[[ 10.  10.   0.  15.   7.   0.]
 [ 90.  10.   0.  40.  15.   0.]
 [ 90.  90.   0.  20.  30.   0.]
 [ 10.  90.   0.  11.  67.   0.]]

现在,您可以“分别处理每个元素”。

假设我们希望从最后行中获取 4 值:

print(arr[3,3])  # 11.0