Вас смущает макрос читателя. Верхний уровень Lisp читается / eval / print, если вы читаете '(foo bar), который вы получаете (quote (foo bar)), если вы eval (quote (foo bar)) вы получаете (foo bar)
Сочетание zip
(для создания возможностей для каждой позиции) и itertools.product
(для циклического изменения возможностей в каждой позиции) делает это довольно легко: [1113 ]
from itertools import product
a = [1, 2, 3]
b = [4, 5, 6]
for result in product(*zip(a, b)):
print(*result, sep='')
zip
просто составляют пары из (1, 4)
, (2, 5)
и (3, 6)
; распаковка этих трех аргументов в product
заставляет product
циклически проходить каждый возможный выбор одного значения из каждой пары, создавая:
123
126
153
156
423
426
453
456