Как упростить вложенные циклы?

l1 = ("*","+")

for i1 in l1:
    for i2 in l1:
        for i3 in l1:
            for i4 in l1:
                for i5 in l1:
                    for i6 in l1:
                        for i7 in l1:
                            for i8 in l1:
                                for i9 in l1:
                                    for i10 in l1:
                                        print([i1, i2, i3, i4, i5, i6, i7, i8, i9, i10])

Как оставить тот же вывод, но сделать код человеческим?


Ответы (3 шт):

Автор решения: Qwertiy

https://ideone.com/ReaVWQ

chs = ("*", "+")

for i in range(1024):
  print([chs[(i >> x) & 1] for x in range(10)])
→ Ссылка
Автор решения: extrn
from itertools import product

for row in product("*+", repeat=10):
    print(list(row))
→ Ссылка
Автор решения: user207200
bits = 10
trans_rule = str.maketrans({'0': '*', '1': '+'})
for i in range(len(trans_rule) ** bits):
    print(list(f'{i:0{bits}b}'.translate(trans_rule)))
→ Ссылка