Я пишу функцию, которая возвращает общее количество перестановок для списка, содержащего все целые числа от 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 означал, что список переставлялся на каждой итерации, а это означает, что окончательный список будет заполняться различными перестановками? (Я понимаю, что случайно вы можете получить три одинаковых списка для такого небольшого числа, но я запускал его довольно много раз, и это определенно, похоже, происходит).
Буду признателен за любую помощь в понимании того, что здесь происходит.
Спасибо