python學習十:copy模塊、collections模塊中的defaultdict、pydiction完成在vim中tab補全


1. copy模塊中的深拷貝:

python中都是引用傳遞,所以會出現以下情況:

l1 = [1, 2]
l2 = l1
l2.append(3)
print l1
print l2
# l1 = [1, 2, 3], l2 = [1, 2, 3]
用[:]切片看似能解決,但是:

l1 = [[1, 2], 3]
l2 = l1[:]
l2.append(4)
# l1 = [[1, 2], 3], l2 = [[1, 2], 3, 4]
l2[0].append(5)
# l1 = [[1, 2, 5], 3], l2 = [[1, 2, 5], 3, 4]
copy模塊中的deepcopy可以完全複製:

import copy
l1 = [[1, 2], 3]
l2 = copy.copy(l1)    #相當於切片
l3 = copy.deepcopy(l1) # 完全複製
l2.append(4)
l2[0].append(5)
l3[0].append(6)
# l1 = [[1, 2, 5], 3], l2 = [[1, 2, 5], 3, 4], l3 = [[1, 2, 6], 3]


2. collections模塊中的defaultdict函數:

參數爲list set int 等內建函數,用來決定值得類型。

類型爲list:

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = collections.defaultdict(list)
for k, v in s:
    d[k].append(v)
list(d.items())
類型爲int,用來做個計數:

>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> for k in s:
...     d[k] += 1
...
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]

3. pydiction


Pydiction 由 3 個主要文件構成:      

python_pydiction.vim -- 該文件爲 Vim 的 plugin 文件,實現 Python 文件的 TAB 補全功能。

complete-dict -- 該文件爲 Vim 的 dictionary 文件,其中包含 Python 關鍵字和模塊結構等信息。是 plugin 進行補全時所查找的參考文件。

pydiction.py -- (可選)該文件是 Python script 文件,用於生成 dictionary 文件。可以通過執行該腳本添加更多的可 TAB 補全模塊。

設置可以參考
# unzip pydiction-1.2.zip
# cp python_pydiction.vim /usr/share/vim/vim70/ftplugin
# mkdir /usr/share/vim/vim70/pydiction
# cp complete-dict pydiction.py /usr/share/vim/vim70/pydiction/
# vi ~/.vimrc





發佈了30 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章