Объединить два одномерных списка, чтобы получить один многомерный список - PullRequest
0 голосов
/ 18 февраля 2019

Для моей области применения мне нужно объединить два одномерных массива в один многомерный массив, оба реализованы с использованием (в конечном итоге вложенных) 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 (декартово произведение).

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

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Нет необходимости импортировать пакет здесь.

Вы можете сделать это с помощью простых списков тоже:

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]

, дающий вам: [(124, 440), (124, 388), (124, 336), ... , (531, 74)]

Использование кортежей, на мой взгляд, болеечетко передайте кому-либо свое намерение соединить все значения vectA со всеми значениями vectB.

Вы все еще можете сделать, например, output[0], чтобы получить (124, 440) и output[0][0], чтобы получить 124 каквы бы со списком списков.

Обратите внимание, что вы можете не перезаписывать значения кортежа, как вы могли бы значениями списка, так как кортежи неизменны.

0 голосов
/ 18 февраля 2019

использование 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)
...