连接两个一维列表以得到一个多维列表

时间:2019-02-18 08:38:33

标签: python python-3.x list nested-lists cartesian-product

对于我的应用程序范围,我需要将两个一维数组连接为一个多维数组,这两个数组均使用(最终嵌套的)list s在Python中实现。串联必须打印第一数组的元素与第二数组的元素之间的所有可能组合。

vectA=[124,172,222,272,323,376,426,479,531]
vectB=[440,388,336,289,243,197,156,113,74]

预期结果是一个多维数组,其中包含vectA all (笛卡尔积)的所有元素的组合。

vectB

2 个答案:

答案 0 :(得分:1)

使用itertools.product

from itertools import product

vectA=[124,172,222,272,323,376,426,479,531]
vectB=[440,388,336,289,243,197,156,113,74]

output = list(product(vectA,vectB))
output = [list(i) for i in output]
print(output)

答案 1 :(得分:1)

无需在此处导入软件包。

您也可以使用简单的list comprehensions进行此操作:

"react-i18next": "^9.0.2",

此外,我建议输出tuples的列表,而不是列表的列表:

vectA = [124, 172, 222, 272, 323, 376, 426, 479, 531]
vectB = [440, 388, 336, 289, 243, 197, 156, 113, 74]

output = [[a, b] for a in vectA for b in vectB]
print(output)

给您:output = [(a, b) for a in vectA for b in vectB]

在我看来,使用元组可以更清楚地向其他人传达您将vectA的所有值与vectB的所有值配对的意图。

您仍然可以例如[(124, 440), (124, 388), (124, 336), ... , (531, 74)]获得output[0](124, 440)获得output[0][0],就像使用列表列表一样。

不过请注意,由于元组是不可变的,因此您不能不能用列表值覆盖元组的值。