目录
迭代器三元表达式列表推导式字典生成式生成器生成器生成式递归迭代器:不是函数,只是一个称呼而已
python中一切皆对象
为什么要有迭代器对象:提供了不依赖于索引取值的手段,只有字符串和列表都是依赖索引取值的,其他的可迭代对象都是无法依赖索引取值的
for循环原理:for循环本质就是一个while循环,只不过是一个一定可控制的while循环
可迭代器对象:含有-iter-方法叫做可迭代对象,除了数字类型都是可迭代对象,可迭代对象使用-iter-变成迭代器
迭代器对象:含有-iter-和-next-方法的叫做迭代器对象,只有文件是迭代器对象,迭代器使用-iter-依然是迭代器
可迭代对象不一定是迭代器对象;迭代器对象一定是可迭代对象
总结:可迭代的对象:Python内置str、list、tuple(元组)、dict、set(集合)、file
s='hello' iter_s = s._iter_() while True: try: print(iter_s.next_()) except StopIteration break h e l l o迭代器对象:执行可迭代对象的—iter—方法,拿到的返回值就是迭代器对象
特点:
内置—next—方法,执行该方法会拿到迭代器对象中的一个值
内置有—iter—方法,执行该方法会拿到迭代器本身
文件本身就是迭代器对象
缺点:取值麻烦,只能一个一个取,并且只能往后取值,值取了就没了
无法使用len()方法取长度
三元表达式—》又叫三目表达式
print(x) if x>y else print(y)条件成立就执行if条件前面的else条件不成立就执行后面的
Python中列表推导式用于使用其他列表创建一个列表
基本形式为:[表达式 for 变量 in 列表]
如:
想得到1-10的平方组成的list list_1_10 = [x**2 for x in range(1,11)] print(list_1_10)generator 本质是一个迭代器 ——》生成器:本质就是迭代器,生成器就是一个自定义的迭代器
生成器:含有yield关键字的函数叫做生成器、
def ge(): yield 3 一个yield相当于一个next;可以暂停函数(相当于return返回值) yield 4 print(ge()) get()得到一个生成器——》生成器本质就是迭代器 g=ge() 得到一个生成器 yield的特性: 暂停函数 通过next取值 return的特性: 终止函数 通过调用函数拿到值generator 本质是一个迭代器 ——》生成器:本质就是迭代器,生成器就是一个自定义的迭代器
生成器表达式:看成老母鸡,节省内存空间,用的时候就下蛋
列表推导式:看成一筐鸡蛋,非常占用内存空间
递归就是函数a内部直接调用函数a本身
每一次递归,会不会结束函数?不会,并且每一次递归都会开辟内存空间,如果一直开辟内存就会炸掉,所以最多递归1000次
真正的递归必须得有退出条件
count = 0 def a(): global count count +=1 print(count) if count == 5: return a() a()运行结果:
1 2 3 4 5递归:
函数内部调用函数自己必须要有退出条件递归必须要有规律 def a(): x=1 print(x) a() a()转载于:https://www.cnblogs.com/gfhh/p/11578766.html