当解压不匹配的可迭代的元素时,可以使用 * 代替任意数量的元素。
使用deque(maxlen=N) 构造函数会新建一个固定大小的队列。当新的元素加入并且这个队列已满的时候,最老的元素会自动被移除掉。
heapq 模块有两个函数:nlargest() 和nsmallest() 可以快速找到列表中最大或最小的几个元素。
使用collections 模块中的defaultdict 来构造一个键对应多个值的字典。
collections 模块中的OrderedDict 类。在迭代操作的时候它会保持元素被插入时的顺序(但是它的大小是普通字典的两倍)
如果对字典的值进行操作,有时候可以使用zip函数将字典的键和值进行翻转,可能会有意想不到的的效果。
Python寻找两个字典的相同点,可以简单的在两字典的keys() 或者items() 方法返回结果上执行集合操作,字典的kyes(),items()支持集合操作。
内置的slice() 函数创建了一个切片对象,可以被用在任何切片允许使用的地方。
collections.Counter 可以用来查找最多出现的元素,可以优先在需要制表或者计数的地方。
from operator import itemgetter
sorted(rows, key=itemgetter('fname'))
sorted(rows, key=lambda r: r['fname'])
itemgetter 类似 lambda表达式,但是速度要快一点
tertools.groupby() 函数对于数据分组操作非常实用。但是通常情况下,会先把数据进行 sort,因为默认的 groupby 操作只会处理相邻的并且相同的 item。
itertools.compress() ,它以一个iterable对象和一个相对应的Boolean 选择器序列作为输入参数。然后输出iterable 对象中对应选择器为True 的元素。当你需要用另外一个相关联的序列来过滤某个序列的时候,这个函数是非常有用的。
collections.namedtuple() 这个函数实际上是一个返回Python 中标准元组类型子类的一个工厂方法。你需要传递一个类型名和你需要的字段给它,然后它就会返回一个类,你可以初始化这个类,为你定义的字段传递值等。
使用一个生成器表达式作为参数会比先创建一个临时列表更加高效和优雅。
nums = [1, 2, 3, 4, 5]
s = sum([x * x for x in nums]) #会先生成一个 list,如果 list 很大,那么会很浪费空间。
s = sum(x * x for x in nums) # 更加优雅的实现方式,省略了括号,变成了生成器表达式。
一个ChainMap 接受多个字典并将它们在逻辑上变为一个字典。同样来自 itertools 模块。
网友评论