Что касается списка python со ссылкой

Вот пример,

>>> x = ["a","b","c"] >>> yy = [x] * 3 >>> yy [['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']] >>> yy[0][0] = 'A' >>> yy [['A', 'b', 'c'], ['A', 'b', 'c'], ['A', 'b', 'c']] >>> 

Когда я делаю yy[0][0] = 'A' , он заменяется на весь первый элемент подписок. Что я получил отсюда, когда я делаю [x] * 3 , он создает некоторую ссылку на список x, но не уверен, как это работает. Может кто-нибудь объяснить.

Заранее спасибо. Джеймс

One Solution collect form web for “Что касается списка python со ссылкой”

[x]*3 создает 3 ссылки на один и тот же список. Вам нужно создать три разных списка:

 >>> yy = [list('abc') for _ in range(3)] >>> yy[0][0]='A' >>> yy [['A', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']] 

Первая строка создает новый список, используя представление списка, которое трижды повторяется.

Используя id() , вы можете визуализировать дублирование той же ссылки на список:

 >>> x=list('abc') >>> id(x) 67297928 # list object id >>> yy=[x]*3 # create a list with x, duplicated... >>> [id(i) for i in yy] [67297928, 67297928, 67297928] # same id multipled >>> yy = [list('abc') for _ in range(3)] >>> [id(i) for i in yy] [67298248, 67298312, 67297864] # three different ids 
  • Python: сопоставление значений из одного списка с последовательностью значений в другом списке
  • Удалить первые обнаруженные элементы из списка
  • трюк с пустым списком python
  • Как извлечь n-ые элементы из списка кортежей в python?
  • Как создать список 1d с .txt с \ n?
  • Как найти все вхождения элемента в списке?
  • сумма вложенного списка в Python
  • Объединение / добавление списков в Python
  • Python - лучший язык программирования в мире.