L=['a','b','c','d'] for (offset,item) in enumerate(L): print offset,item 打印的结果: 0 a 1 b 2 c 4 d 迭代器: for i in range(100): 生成列表 for i in xrange(100) 迭代器,速度会比range快 readlines() xreadlines() a=iter(list) 生成迭代器 a.next() 节省内存:只记录迭代的开头和结尾,当前位置。 和函数一起使用,可以使函数中断并保存函数的中断状态,yield,可以减少程序的阻塞 例子: def run(): print "test1" yield 1 #变成迭代器,程序运行到这里会停止跳到外面的执行。yield相当于返回值。 time.sleep(1) print "test2" time.sleep(1) print "test2" time.sleep(1) print "test2" time.sleep(1) task=run() task.next() print '--do sth else---' task.next() #如果不加本行,就不会执行yield后面的。 函数: 函数中可以直接修改全局的列表 字典等复杂的数据类型。 lambda函数(匿名函数): def f(x): return x**2 g = lambda x:x**2 匿名函数的写法 print map(f,range(10)) 把列表输入函数运算,再返回结果 print map(lambda x:x**2,range(10)) sorted()用法:例子是对字典key进行排序(虽然字典是无序的) dic1={3:2,4:3,6:9,'a':'test','e':'fff','*':'$'} print sorted(dic1.items(),key=lambda x:x[0]) rgs kargs 内置函数: a=range(10) a=iter(a) #把列表变成了迭代器 a.next() print [i for i in a if a<5] filter(lambda x:x*x,a) 选出符合的元素 a=[1,2,3,4] b=[5,6,7,8,9,10] zip(a,b) [(1,5),(2,6),(3,7),(4,8)] map(None,a,b) [(1,5),(2,6),(3,7),(4,8),(none,9),(none,10)] reduce(lambda x,y:x+y,a) 序列化: 硬盘上只能存字符串或者二进制,因此不能存字典,列表等。 pickle 只是python中使用的序列化类型。 pickle.dump(对象,文件句柄) pickle.load() pickle.dump(dic1,f) json.dump() json.load() 正则表达式: m = re.match("\d",匹配的对象) match是从开头匹配。 查看匹配到字符: m.group() re.search()全局查找匹配 re.findall() 查找所有匹配到的 re.split() 按照符号分割 re.sub('\d',"|",字符对象) 把梳子全部替换成| re.sub('\d',"|",字符对象,count=2) 只替换前两个 模块的创建和导入: if __name__=='__main__' 主动执行会执行,导入不执行 常用模块: Import sys Sys.path Sys.path Sys.exit Import os os.system('uname') Os.mkdir('myDir') Os.chdir('~')