Python - вариация уникальных комбинаций в itertools - PullRequest
0 голосов
/ 11 сентября 2018

Учитывая целое число n, мне нужно сгенерировать последовательность, подобную приведенной ниже.

Есть ли приложение combinations, которое может дать то же самое без двойного цикла в коде (что кажется не слишком питоническим)?

код

n = 5
sequence = [1] * n
print(sequence)
for i in range(n-1):
    for j in range(n-i-1):
        sequence[n-j-1] += 1
        print(sequence)

последовательность вывода

код выше дает:

[1, 1, 1, 1, 1]
[1, 1, 1, 1, 2]
[1, 1, 1, 2, 2]
[1, 1, 2, 2, 2]
[1, 2, 2, 2, 2]
[1, 2, 2, 2, 3]
[1, 2, 2, 3, 3]
[1, 2, 3, 3, 3]
[1, 2, 3, 3, 4]
[1, 2, 3, 4, 4]
[1, 2, 3, 4, 5]

стилистическая нота

Я мог бы преобразовать double-for в один цикл while с двумя индексами i, j, но я нахожу, что решение по какой-то причине сложнее отладить

...