连接两个单维列表以获得一个多维列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接两个单维列表以获得一个多维列表相关的知识,希望对你有一定的参考价值。

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

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

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

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

无需在此处导入包。

您也可以使用简单的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,就像你的列表一样。

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

另一答案

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

以上是关于连接两个单维列表以获得一个多维列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个单维数组转换为一个多维数组 - PHP

JAVA单维数组与多维数组编程

两个片段之间的 onItemClickListener

带有两个列表片段的可滚动布局

13 个非常有用的 Python 代码片段

循环打印两个列表以获得两列,每个列表的每个元素的第一个字母之间有固定(自定义集)空间