Первая функция просто возвращает случайный список во всех непустых списках. Вторая функция возвращает случайный список, который, если текущий список (тот, который возвращается из первой функции), последний элемент ниже, чем другой список в состоянии или если список пуст.
Код: Выделить всё
import random
def fooOne(state):
lst = [x for x in state if len(x) > 0]
return random.choice(lst)
def fooTwo(state,current):
lst2 = [x for x in state if len(x) == 0 or x[-1] > current[-1]]
return random.choice(lst2)
state = [[3, 2, 1],
[],
[]]
cur = fooOne(state)
temp = fooTwo(state,cur)
print("State before append(): {}".format(state))
temp.append(cur.pop())
print("State after append(): {}".format(state))
< /code>
Обе функции возвращают разные списки. Я назначаю эти списки двум разным переменным, называемым cur output: < /p>
State before append(): [[3, 2, 1], [], []]
State after append(): [[3, 2], [], [1]]
< /code>
Почему исходный список меняется, пока я использую append () в другом списке? Эти списки являются лишь некоторыми частями исходного списка, зачем их изменение (при назначении их новым переменным) влияет на исходный список?
Подробнее здесь: https://stackoverflow.com/questions/601 ... other-list