- 一、列表推导式
- 1.就是指的轻量级循环创建列表。
- 2.格式 [变量 for 变量 in 可迭代的 if 判断]
- 3.举例
- [x for x in range(5)] -->[0,1,2,3,4]
- [x for x in range(1,5,2)] -->[1,3]
- [9 for x in range(3)] -->[9,9,9]
- [x for x in range(5,20) if x%4==0] -->[8,12,16]
- [(x,y) for x in range(1,3) for y in range(4,6)] -->[(1,4),(1,5),(2,4),(2,5)]
- [(x,y) for x in range(1,4) for y in range(2,5) if x%2==0 and y%2==0] -->[(2,2),(2,4)]
- 二、生成器
- 1.Python中,这种一边循环一边计算的机制,称为生成器:generator。类型
- 2.创建方法
- 1.-根据列表推导式创建: 把列表推导式的[],改为()
- 2.在函数中使用yield变成生成器
- def fun(length):
- a,b=0,1
- n=1
- while n<=length:
- yield b
- a,b=b,a+b
- n+=1
- f=fun(5) --》f就为生成器
- 3.使用方法
- 1.next(生成器) 打印出来为yield 后面的值
- 2.生成器.__next__() 打印出来为yield 后面的值
- 3.生成器.send(参数) 传参 打印出来为yield 后面的值 参数=yield 值
- next(f) ->1
- next(f) ->1
- next(f) ->2
- f.__next__() -->3
- f.__next__() -->5
- f.send("哈哈") -->8
- 当促进生成器计算到最后一个元素,继续执行是 StopIteration 异常
- 4.for 循环 遍历
- for i in 生成器:
- print(i)
- for i in 生成器:
- 4. 运行规则
- 1.当第一次使用next(生成器) 遇到yield 暂停并返回yield 后的值
- 2.当第二次使用next(生成器) 继续上一次暂停的程序,当循环第二次遇到yield 时暂停 并返回yield 后的值
- 3.以此类推
- 三、迭代器
- 1.可迭代对象 Iterable 可迭代对象不是迭代器
- 1.集合对象:列表,元组,字典,字符串,集合(set)
- 2.生成器对象:既是迭代器也是可迭代对象
- 2.迭代器 Iterator 可以使用next()
- 3.
- 判断是否是可迭代对象
- isinstance(对象,Iterable)
- from collections import Irerable
- 判断是否是迭代器
- from collections import Irerator
- isinstance(对象,Iterator)
- 判断是否是可迭代对象
- 4.可迭代对象转换迭代器 iter(可迭代的)
- 5.
- 可迭代对象 能使用 for in 遍历
- 迭代器 使用next(迭代器) 促进计算 也可以 for in 遍历
- 1.可迭代对象 Iterable 可迭代对象不是迭代器
python 列表推导式,生成器,迭代器

最新推荐文章于 2022-06-24 10:03:58 发布
