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

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

Сообщение Anonymous »

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

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

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

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]]
Почему исходный список меняется, когда я использую функцию Append() в другом списке? Эти списки являются лишь некоторыми частями исходного списка, почему их изменение (при назначении новым переменным) влияет на исходный список?

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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