连接两个单维列表以获得一个多维列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接两个单维列表以获得一个多维列表相关的知识,希望对你有一定的参考价值。
对于我的应用程序范围,我需要将两个一维数组连接成一个多维数组,这两个数组都使用Python中的(最终嵌套的)list
s实现。连接必须打印第一个数组的元素与第二个数组的元素之间的所有可能组合。
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]...]
答案
无需在此处导入包。
您也可以使用简单的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
,就像你的列表一样。
但请注意,您不能像列表的值一样覆盖元组的值,因为元组是不可变的。
另一答案
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)
以上是关于连接两个单维列表以获得一个多维列表的主要内容,如果未能解决你的问题,请参考以下文章