Создание массивов ND во время выполнения со стандартной библиотекой - PullRequest
3 голосов
/ 01 мая 2019

У меня есть три массива

a = [2]
b = [2,3,6]
c = [1]

Я хочу объединить их так, чтобы я получил массив размером len(a)*len(b), содержащий все перестановки обоих.(C всегда будет содержать одно значение)

Я думал, что что-то подобное будет работать

newArr = [for i in range len(a)*len(b) [for x in a][for y in b][for z in c]]
print(newArr)

[[2,2,1],[2,3,1],[2,6,1]]

Однако, похоже, это не допускается в синтаксисе языка.Кто-нибудь знает, как мне это сделать со стандартными библиотеками?

Ответы [ 2 ]

3 голосов
/ 01 мая 2019
[[x, y, z] for x in a for y in b for z in c]

Например:

>>> [[x, y, z] for x in [2] for y in [2,3,6] for z in [1]]
[[2, 2, 1], [2, 3, 1], [2, 6, 1]]
1 голос
/ 01 мая 2019

Использование itertools.product (...)

import itertools

a = [2]
b = [2,3,6]
c = [1]

p = itertools.product(a, b, c)

print(list(p))

[(2, 2, 1), (2, 3, 1), (2, 6, 1)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...