нежелательное одновременное обновление всех элементов списка, когда я хочу обновить только один - PullRequest
0 голосов
/ 11 апреля 2020

Почему все первые элементы каждого посещенного элемента изменяются на True, когда я обновил только один. Я очень новичок в программировании, поэтому, пожалуйста, извините, если вопрос глупый. Заранее спасибо.

visited=[[False]*3]*3
print(visited)    
x=0
y=0
visited[x][y]=True
print(visited)

Вывод:

[[False, False, False], [False, False, False], [False, False, False]]

[[True, False, False], [True, False, False], [True, False, False]]

1 Ответ

0 голосов
/ 11 апреля 2020

Это произошло потому, что вы определили список следующим образом:

visited=[[False]*3]*3

Здесь список генерируется умножением [[False]*3] 3 раза. То есть python хранит 3 элемента в одной и той же ячейке памяти (потому что 3 одинаковые, если я использую правильное слово, клоны). Поэтому, когда вы меняете один, все меняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...