python学习十:copy模块、collections模块中的defaultdict、pydiction完成在vim中tab补全

来源:互联网 发布:sql 第几次出现 编辑:程序博客网 时间:2024/03/28 21:05

1. copy模块中的深拷贝:

python中都是引用传递,所以会出现以下情况:

l1 = [1, 2]l2 = l1l2.append(3)print l1print 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 copyl1 = [[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 collectionss = [('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





原创粉丝点击