Кажется, что цикл for не действует на случайную функцию - PullRequest
0 голосов
/ 10 марта 2019

Я пишу функцию, которая возвращает общее количество перестановок для списка, содержащего все целые числа от 1 до n, вместе со списком, содержащим все сами перестановки (в любом порядке).

Я заметил что-то странное, происходящее со следующим кодом:

def permutations(n):

    perm_list = list(range(n+1)[1::])

    final_list = []

    for i in range(3):
        random.shuffle(perm_list)    
        final_list.append(perm_list)


    print(len(final_list))
    print(final_list)

Выходные данные для перестановок вызовов (3):

3
[[2, 3, 1], [2, 3, 1], [2, 3, 1]]

Один раз, затем в следующий раз:

3
[[2, 1, 3], [2, 1, 3], [2, 1, 3]]

Etc; каждый раз, когда я запускаю его, перестановка внутреннего списка менялась, но все три внутренних списка идентичны. Хотелось бы, чтобы цикл for означал, что список переставлялся на каждой итерации, а это означает, что окончательный список будет заполняться различными перестановками? (Я понимаю, что случайно вы можете получить три одинаковых списка для такого небольшого числа, но я запускал его довольно много раз, и это определенно, похоже, происходит).

Буду признателен за любую помощь в понимании того, что здесь происходит.

Спасибо

...