Перечисление всех возможных списков (любой длины) неотрицательных целых чиселPython

Программы на Python
Anonymous
Перечисление всех возможных списков (любой длины) неотрицательных целых чисел

Сообщение Anonymous »

Я хотел бы сгенерировать/перечислить все возможные списки неотрицательных целых чисел, чтобы алгоритм в какой-то момент сгенерировал такие списки

Код: Выделить всё

[1]
[24542,0]
[245,904609,848,24128,350,999]
Другими словами, для всех возможных неотрицательных целых чисел сгенерируйте все возможные списки, содержащие такое количество неотрицательных целых чисел.
Я понял что хитрость для списка с двумя числами заключается в перечислении их значений по диагонали, вот так



первое значение\второе значение
0
1
2
3




0
0 (это будет сгенерировано первым)
2 (этот третий и т. д.)
5
9


1
1 (в эту секунду)
4
8



2
3
7




3
6





< /table>

Код: Выделить всё

def genpair():
x = 0
y = 0
yield x,y
maxx = 0
while True:
maxx += 1
x = maxx
y = 0
while x >= 0:
yield x,y
x -= 1
y += 1

gen = genpair()

for i in range(10):
print(next(gen))
Но позволяет ли тот же трюк (или другой) работать и для списков произвольной длины?


Подробнее здесь: https://stackoverflow.com/questions/790 ... e-integers

Вернуться в «Python»