itertools.dropwhile() 函数。使用时,你给它传递一个函数对象和一个可迭代对象。它会返回一个迭代器对象,丢弃原有序列中直到函数返回True 之前的所有元素,然后返回后面所有元素。
itertools.permutations() , 它接受一个集合并产生一个元组序列, 每个元组由集合中所有元素的一个可能排列组成。也就是说通过打乱集合中元素排列顺序生成一个元组
使用itertools.combinations() 可得到输入集合中元素的所有的组合。它不关心元素的顺序,(a,b)和(b,a)是一样的
itertools.chain() 方法可以同时迭代多个可迭代对象
heapq.merge() 需要所有输入序列必须是排过序的。特别的,它并不会预先读取所有数据到堆栈中或者预先排序,也不会对输入做任何的排序检测。它仅仅是检查所有序列的开始部分并返回最小的那个,这个过程一直会持续直到所有输入序列中的元素都被遍历完。
iter 函数一个鲜为人知的特性是它接受一个可选的callable 对象和一个标记(结尾) 值作为输入参数。当以这种方式使用的时候,它会创建一个迭代器,这个迭代器会不断调用callable 对象直到返回值和标记值相等为止。
在print() 函数中使用sep 和end 关键字参数,以你想要的方式输出。
I/O 系统由一系列的层次构建而成。
io.TextIOWrapper 是一个编码和解码Unicode 的文本处理层,io.BufferedWriter 是一个处理二进制数据的带缓冲的I/O 层, io.FileIO 是一个表示操作系统底层文件描述符的原始文件。增加或改变文本编码会涉及增加或改变最上面的io.TextIOWrapper 层。
一个文件描述符和一个打开的普通文件是不一样的。文件描述符仅仅是一个由操作系统指定的整数,用来指代某个系统的I/O 通道。
不要对不信任的数据使用 pickle.load(),pickle 只在相互之间能够认证对方的解释器的内部使用
如果需要长期存储数据,那么不建议使用 pickle,而是使用 json,xml 等标准格式
优先选择 csv 模块分割或解析 CSV 数据。
json.loads()的 object_hook 参数可以传递一个函数用来控制行为