«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему использование оператора Star для инициализации списка списков вызывает связь?

Почему использование оператора Star для инициализации списка списков вызывает связь?

Опубликовано в 2025-02-12
Просматривать:379

Why Does Using the Star Operator to Initialize a List of Lists Cause Linkage?

Почему этот код для инициализации списка списков, по -видимому, связывает списки? = [[]] * n может привести к неожиданному поведению, когда списки, по -видимому, связаны вместе. к тому же основному объекту списка. Когда вы изменяете один из списков в последовательности, изменения отражены во всех других списках, потому что все они относятся к одному и тому же объекту. , важно инициализировать каждый список отдельно. Это может быть достигнуто с помощью следующего синтаксиса:

x = [[] для i в диапазоне (n)]

В данном случае понимание списка создает новый список для каждого Итерация петли, в результате чего список независимых объектов списков. []] * 3 x [1] .append (0) print (x) # output: [[0], [0], [0]]

В этом примере список x содержит три ссылки на один и тот же объект списка, поэтому любые изменения, внесенные в один список Другие.

, с другой стороны, следующий фрагмент кода создает список из трех различных списков:
x = [[] for i in range(n)]
x = [] для i в диапазоне (3)]] x [1] .append (0) print (x) # output: [[], [0], []]

здесь, каждый список в x - это отдельный объект, поэтому изменения, внесенные в один список, не влияют на другие.

Заявление о выпуске Эта статья воспроизводится: 1729212679 Если есть какие -либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3