人生苦短,我用 Python! 之前零零散散的看过一些python的基础知识,现在想好好学习一下了,立帖为证。以《Python cookbook》为学习材料
Part 1 数据结构及算法(一)
1.1 解压序列赋值给多个变量
a.将含有N个元素的序列复制给M(M<=N)个变量
M=N时
>>> list = range(3)
>>> x,z,y = list
>>> x
0
>>> y
2
>>> z
1
b.当M<N时,不想截取的元素用_代替,注意_只可以代替一个元素的位置
>>> list = range(3)
>>> _,x,_ = list
>>> x
1
当M<<N并且只想截取里面部分元素时,可以用*代替中间多个元素,例如想截取除去序列头尾两个元素时,用函数实现
def drop_first_last(list): first, * middle, last = list return middle if __name__ == '__main__': list = range(10) print(drop_first_last(list))结果是:
[1, 2, 3, 4, 5, 6, 7, 8]
c.保留最后N个元素
保留有限记录可考虑collections中的deque(当限制长度的deque增加超过限制数的项时, 另一边的项会自动删除)
比如,下面的代码在多行上面做简单的文本匹配,并只返回匹配成功的前N行:
from collections import deque def search(lines,pattern,history = 5): pre_lines = deque(maxlen = history) for line in lines: if pattern in line: yield line,pre_lines pre_lines.append(line) if __name__ == '__main__': with open('input.txt') as inputfile: with open('output.txt', 'w') as outputfile: for line,pre_lines in search(inputfile,'python',5): for pline in pre_lines: outputfile.write(pline) outputfile.write(line) outputfile.write('-'*20)
其中,input.txt的内容如下:
how are you,Kitty test I am fine Hello world ! I love programming ! I love programming ! python is very usefull ! you know what i don't know i use
输出结果:
test I am fine Hello world ! I love programming ! I love programming ! python is very usefull ! --------------------
充电时刻:
Python Deque 模块使用详解
Deque模块是Python标准库collections中的一项。它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除.
q = deque(maxlen = N):创建一个最大长度为N的deque序列,当长度超过N时,会自动截取最后N个元素,即丢掉最老
的元素(真是喜新厌旧丫)。当参数省略,则会提供一个无限大小的序列。
q.append():添加元素到序列
q.pop():删除最后一个元素
q.leftpop():删除第一个元素
q.extend():扩展序列