Итерация / Перечисление по подмножеству N ^ 5 в Python - PullRequest
0 голосов
/ 16 мая 2018

У меня есть подмножество 100 5 , пятимерных векторов, элементы которых лежат в натуральных числах. Это подмножество определяется как произведение интервалов [ a 1 , a 2 ] & times; [ b 1 , b 2 ] & times; ... & times; [ f 1 , f 2 ], и я хотел бы перечислить подмножества размера 1, то есть векторы ( x 1 , x 2 , x 3 , x 4 , x 5 ) где x 1 в [ a 1 , a 2 ], x 2 в [ b 1 , b 2 ] и т.д. Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 16 мая 2018

Это декартово произведение , и вы можете использовать itertools.product для его вычисления:

a = [0, 1]
b = [2, 3]
c = [4, 5]
d = [6, 7]
e = [8, 9]

for subset in product(a, b, c, d, e):
    print(subset)

выход

(0, 2, 4, 6, 8)
(0, 2, 4, 6, 9)
(0, 2, 4, 7, 8)
(0, 2, 4, 7, 9)
(0, 2, 5, 6, 8)
(0, 2, 5, 6, 9)
(0, 2, 5, 7, 8)
(0, 2, 5, 7, 9)
(0, 3, 4, 6, 8)
(0, 3, 4, 6, 9)
(0, 3, 4, 7, 8)
(0, 3, 4, 7, 9)
(0, 3, 5, 6, 8)
(0, 3, 5, 6, 9)
(0, 3, 5, 7, 8)
(0, 3, 5, 7, 9)
(1, 2, 4, 6, 8)
(1, 2, 4, 6, 9)
(1, 2, 4, 7, 8)
(1, 2, 4, 7, 9)
(1, 2, 5, 6, 8)
(1, 2, 5, 6, 9)
(1, 2, 5, 7, 8)
(1, 2, 5, 7, 9)
(1, 3, 4, 6, 8)
(1, 3, 4, 6, 9)
(1, 3, 4, 7, 8)
(1, 3, 4, 7, 9)
(1, 3, 5, 6, 8)
(1, 3, 5, 6, 9)
(1, 3, 5, 7, 8)
(1, 3, 5, 7, 9)
...