day13

mac2022-06-30  63

目录

迭代器三元表达式列表推导式字典生成式生成器生成器生成式递归

迭代器

迭代器:不是函数,只是一个称呼而已

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)

字典生成式

lt1=['a','b','c'] lt2=[1,2,3] dic = {k:v ** 2 for k,v in zip(lt1,lt2)} print(dic) lt = list('abc') print(lt)

生成器

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

最新回复(0)