Я программирую простое программное обеспечение для практики.
def check(num, lst):
for i in lst:
if num == i:
return False
else:
lst.append(num)
return True
timelst = []
for i1 in range(1,7):
usednum = [i1]
for i2 in range(1,7):
if not check(i2, usednum):
continue
for i3 in range(1,7):
if not check(i3, usednum):
continue
for i4 in range(1,7):
if not check(i4, usednum):
continue
for i5 in range(1,7):
if not check(i5, usednum):
continue
for i6 in range(1,7):
if not check(i6, usednum):
continue
else:
print(usednum) #print the appending list before actual appending
timelst.append(usednum)
usednum.pop()
break
usednum.pop()
При запуске этого я хочу, чтобы время было таким:
[[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 6, 5],
[2, 1, 3, 4, 5, 6],
[2, 1, 3, 4, 6, 5],
...
]
Однако вот что я на самом деле получаю:
[[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6],
[2, 1, 3, 4, 5, 6],
[2, 1, 3, 4, 5, 6],
...
]
Я очень смущен этим и застрял надолго. Я попытался распечатать список 'usednum' перед его добавлением, и он отлично возвращает то, что я хочу.
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 6, 5]
[2, 1, 3, 4, 5, 6]
[2, 1, 3, 4, 6, 5]
#printed lists while running the program
Но та же проблема все еще возникает каждый раз, когда я проверяю время после выполнения программы.
Я использовал python 3.7 со spyder. Не должно быть проблем с моим компилятором, так как я попытался запустить его на ipython, и все равно получил тот же результат.
Может кто-нибудь помочь мне решить эту проблему? Спасибо!