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

Concatenate two single-dimension list to get one multi-dimensional list

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

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

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

output=[[124,440],[124,388],[124,336],[124,289]...[172,440],[172,388]...]

使用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)

此处无需导入包。

您也可以使用简单的 list comprehensions 来做到这一点:

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)

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

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

给你:[(124, 440), (124, 388), (124, 336), ... , (531, 74)]

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

你仍然可以做,例如output[0] 得到 (124, 440)output[0][0] 得到 124 就像你使用列表列表一样。

但请注意,您可以而不是覆盖元组的值,就像您可以使用列表的值一样,因为元组是不可变的。