Как создать счетчик ролловера в списке в Python? - PullRequest
0 голосов
/ 16 января 2020

Мне нужно создать счетчик ролловеров в списке в python. Учитывая начальный список стартового списка переменной длины и все термины minnum, счетчик должен увеличивать индекс 0 на единицу, пока не достигнет maxnum, в этот момент индекс 0 сбрасывается до minnum, а индекс один увеличивается на единицу. Это продолжается до тех пор, пока все члены списка не станут maxnum, после чего l oop должен закончиться. Вот пример. minnum = 1, maxnum = 2, startlist = [1, 1, 1] Отсчет начинается. [1, 1, 1] -> [2, 1, 1] -> [1, 2, 1] -> [2, 2, 1] -> [1, 1, 2] -> [2, 1, 2] -> [1, 2, 2] -> [2, 2, 2] -> end

Я пробовал много кода, но, похоже, ничего не работает. Если бы кто-то мог помочь мне с этим, это было бы очень ценно.

1 Ответ

0 голосов
/ 16 января 2020

Может быть, вы можете использовать itertools:

from itertools import product

def main():
    minimum = 1
    maximum = 2
    num_counters = 3

    # Build the counter values iterable object
    counter_range = range(minimum, maximum+1)

    # Build the cartesian product of your counters.
    # You have to reverse the generated tuples to make it match your requirements
    counters = [tuple(reversed(x)) for x in product(counter_range, repeat=num_counters)]
    print(counters)

if __name__ == '__main__':
    main()
[(1, 1, 1), (2, 1, 1), (1, 2, 1), (2, 2, 1), (1, 1, 2), (2, 1, 2), (1, 2, 2), (2, 2, 2)]
...