Почему этот список изменяется после использования append () в другом спискеPython

Программы на Python
Anonymous
 Почему этот список изменяется после использования append () в другом списке

Сообщение Anonymous »

Я не знаю, упускаю ли я здесь что -то здесь, но не понимаю, почему список ниже изменяется после использования функции append (). Сначала я отправляю список (который содержит списки) на 2 разных функции. < /p>

Первая функция просто возвращает случайный список во всех непустых списках. Вторая функция возвращает случайный список, который, если текущий список (тот, который возвращается из первой функции), последний элемент ниже, чем другой список в состоянии или если список пуст.

Код: Выделить всё

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 
и temp . Таким образом, как cur , так и temp также списки. Государство Список изменений. Это изменится, как я использовал эту строку в исходном списке. Но я делаю эту операцию в двух разных списках. < /P>

output: < /p>

State before append(): [[3, 2, 1], [], []]
State after append(): [[3, 2], [], [1]]
< /code>

Почему исходный список меняется, пока я использую append () в другом списке? Эти списки являются лишь некоторыми частями исходного списка, зачем их изменение (при назначении их новым переменным) влияет на исходный список?

Подробнее здесь: https://stackoverflow.com/questions/601 ... other-list

Вернуться в «Python»