2012-07-29 83 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分鐘內或多或少) – 2012-07-29 17:22:23

+0

請注意,它不是深層複製;它只是將引用複製到每個對象並將它們存儲在一個新列表中。雖然這不應該是所有選擇的複製方法,但如果您想在不影響迭代的情況下同時迭代和修改列表,這將非常有用。 – CosmicComputer 2012-07-29 22:27:24