Python中的一些小技巧

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


给dict设置默认值


给所有的key的默认值设置为[],包括新添加的key

from collections import defaultdict
dic = defaultdict(list)

setdefault一次只能设置一个值,但好处是能使用链式语法,但是defaultdict更加快一点。

dic = {}
dic.setdefault("name_list", []).append('Tom')

使用fromkeys,用法 dict.fromkeys(seq[, value]),value默认是国际惯例的 None。

name_list = ['Tom', 'John']
dic = {}.fromkeys(name_list, 3)
# {'Tom': 3, 'John': 3}

dic = dict.fromkeys([1,2], True)
# {1: True, 2: True}

列表去重的快速方法

这种去重方法比用set更快。

mylist = [1,2,3,4,3,2,1,2,3,2,4]
list = {}.fromkeys(mylist).keys()
# list = [1,2,3,4]

列表深复制

a = [1,2,3]
b = a[:]

使用map作iterator

当将function设置为None时,可起到iterator的作用,结果类似于使用了zip,唯一不同的是map可以按照最长的列表扩展。

map(None, xrange(3), xrange(10, 12))
# [(0, 10), (1, 11), (2, None)]

zip(xrange(3), xrange(10, 12))
# [(0, 10), (1, 11)]

dict 删除 key

如果要删除的key数量较多(超过一半)的话,建议重新生成dict;如果数量较少,在pop和del都可以的情况下,建议使用del,这个比较快一点。


做循环的时候,尽量使用xrange()函数

xrange与range的用法完全相同,但是 range() 返回的是一个列表,而xrange() 返回的是一个生成器。在返回很大的值的时候,使用xrange的性能比较好。


你可能感兴趣的:(python)