2012-07-29 20 views
2

Я смотрел на источник docutil кода (который находится в Python), когда я увидел это (отредактированный):словарь Python «скопировать значение»

def __init__(self, **attributes): 
    for att, value in attributes.items(): 
     att = att.lower() 
     if att in self.list_attributes: 
      # mutable list; make a copy for this node 
      self.attributes[att] = value[:] 
     else: 
      self.attributes[att] = value 

Линия Я говорю о том, это:

  self.attributes[att] = value[:] 

Что делает «[:]» точно? В комментарии выше он подсказывает какую-то копию, но мои поисковые запросы не были успешными, и я не могу понять, является ли это языковой функцией или трюком/ярлыком.

ответ

8

Это делает копию списка (это не словарь)

нотация называется «нарезка». Вы также можете указать, где начинать и заканчивать копирование, если вы ничего не укажете - как в выписке кода - он будет скопирован с первого на последний элемент.

Например, mylist[1:] скопирует весь список, исключающий первый элемент.

Посмотрите here для получения более подробного объяснения.

+0

Спасибо, он отвечает на мой вопрос отлично. Я помечаю это как ответ, как только сайт мне позвонит (через 8 минут или более) –

+0

Обратите внимание, что это не глубокая копия; он просто копирует ссылки на каждый объект и сохраняет их в новом списке. Хотя это не должно быть вашим методом копирования для всего, полезно, если вы хотите одновременно перебирать и изменять список, не закручивая свою итерацию. – CosmicComputer

Смежные вопросы