Python学习(三):迭代器、生成器、装饰器、递归、算法、正则
2017-02-13 11:24
856 查看
1、迭代器
迭代器是访问集合的一种方式,迭代对象从集合的第一个元素开始访问,直到元素被访问结束,迭代器只能往前不能后退,最大的优点是不要求事先准备好整个迭代过程中的元素,这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。
特点:
访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
不能随机访问集合中的某个值,只能从头到尾依次访问
访问到一半时不能往回退
便于循环比较大的数据集合,节省内存
使用:
#生成迭代器:
name = iter(['d','c','b','a',])
print(name.__next__())
print(name.__next__())
print(name.__next__())
print(name.__next__())
f = open("test.text","r")
for line in f: #已迭代的方式读取文件,节省内存
print(line)
2、生成器
一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就会变成生成器
作用:
yield可以使函数中断,并保存中断状态,中断后,代码可以继续往下执行,过一段时间还可以再重新调用这个函数,从上次yield的下一句开始执行。
相当于生成器函数生成值后自动挂起并暂停他们的执行和状态,他的本地变量将保存状态信息,这些信息在函数恢复时将再度有效。
冒泡排序
6、正则入门
三十分钟正则表达式>>点我
迭代器是访问集合的一种方式,迭代对象从集合的第一个元素开始访问,直到元素被访问结束,迭代器只能往前不能后退,最大的优点是不要求事先准备好整个迭代过程中的元素,这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。
特点:
访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
不能随机访问集合中的某个值,只能从头到尾依次访问
访问到一半时不能往回退
便于循环比较大的数据集合,节省内存
使用:
#生成迭代器:
name = iter(['d','c','b','a',])
print(name.__next__())
print(name.__next__())
print(name.__next__())
print(name.__next__())
f = open("test.text","r")
for line in f: #已迭代的方式读取文件,节省内存
print(line)
2、生成器
一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就会变成生成器
作用:
yield可以使函数中断,并保存中断状态,中断后,代码可以继续往下执行,过一段时间还可以再重新调用这个函数,从上次yield的下一句开始执行。
相当于生成器函数生成值后自动挂起并暂停他们的执行和状态,他的本地变量将保存状态信息,这些信息在函数恢复时将再度有效。
1 #!/usr/bin/env python 2 #coding=utf-8 3 DataList = [1,2,2,65,3,55,3,5,54,3,54,3,4,534,5435,234] 4 #DataList一共有N个数据,那么就要经过N-1次排序才能完成从小到大排序 5 for j in range(1,len(DataList)): 6 #从第一个数据开始,依次和下一个数据进行比较 7 for i in range(len(DataList)-j): 8 #如果本次数据大于下一个数据,将本次数据与下次数据调换位置 9 if DataList[i] > DataList[i+1]: 10 SmallTmp = DataList[i+1] 11 DataList[i+1] = DataList[i] 12 DataList[i] = SmallTmp 13 print(DataList)
冒泡排序
6、正则入门
三十分钟正则表达式>>点我
1 #!/usr/bin/env python 2 #coding=utf-8 3 4 import re 5 #match:从开头找,如果开头不匹配则返回None 6 result1 = re.match('\d+','11112421adsafefrqweadfadfsafdqdf') 7 #search:是遍历,直到找到为止,找到即终止 8 result2 = re.search('\d+','ds2ad213131safe22frqweadfadfsafdqdf') 9 #findall:查找所有的匹配值,返回的是一个列表 10 result3 = re.findall('\d+','11112421adsafefrqw3ea432dfadfsafdqdf') 11 #匹配1到3,出现1到5次,*零到多个 ?零或者一 +大于等于1 12 result4 = re.findall('[1-3]{1,5}','11112421adsafefrqw3ea432dfadfsafdqdf') 13 Before = "11112421adsafefrqw3ea432dfadfsafdqdf" 14 #sun:替换,将a替换成T,替换6个 15 After = re.sub("a","T",Before,count=6) 16 if result1: 17 print(result1.group()) 18 if result2: 19 print(result2.group()) 20 if result3: 21 print(result3) 22 if result4: 23 print(result4) 24 print(Before,After) #*零到多个 ?零或者一 +大于等于1 ^匹配开头 $匹配结尾 .匹配任意字符
相关文章推荐
- python开发学习-day04(迭代器、生成器、装饰器、二分查找、正则)
- python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
- 5.python(迭代器,装饰器,生成器,基本算法,正则)
- Python(四)装饰器、迭代器&生成器、re正则表达式、字符串格式化
- python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化
- python递归、迭代器和生成器在算法中的运用
- python核心高级学习总结8------动态性、__slots__、生成器、迭代器、装饰、闭包
- Python学习之三大名器-装饰器、迭代器、生成器 推荐
- Python 学习笔记 迭代器和生成器
- python学习笔记-函数式编程、迭代器和生成器
- Python3 学习第六弹: 迭代器与生成器
- python中的迭代器和生成器学习
- Python_Day_5装饰器、字符串格式化、序列化、内置模块、生成器、迭代器之篇
- python迭代器 生成器 装饰器
- Python学习之迭代对象、迭代器、生成器
- 深入学习python(二) 迭代器(Iterator)和生成器(Generate)
- Python之迭代器、生成器、装饰器和递归
- Python菜鸟之路:Python基础-生成器和迭代器、递归
- python 从yield 学习迭代器和生成器
- python学习笔记-Day05-第一部分(再谈装饰器)(递归)