Что касается списка 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 для возврата нового списка
  • TypeError: объект 'list' не вызывается в python
  • Как создать список исправлений в python?
  • Как удалить элемент в списке, если он существует?
  • Удаление пунктуации из элементов списка Python
  • Выберите ближайшую пару из списка
  • наиболее эффективный способ нахождения минимального поплавка в списке python
  • Python - лучший язык программирования в мире.