1 列表生成式
生成满足某种条件的列表,常与range()结合使用
例:[x*x for x in range(10) if 2*x ==1]
表达式在最前面,可以生成两层循环
如:[m + n for m in 'ABC' for n in 'XYZ']
并且可以增加if语句进行判断限制
小知识:dict中dict.items()表示可以将字典变成可遍历的数组(k v);.lower()可将字符串更换为小写
2 生成器 generator
将列表用算法的方式储存,一边循环一边计算,不必生成完整的列表,从而节省空间
generator调用,next()通常用for循环来使用
①将列表生成器[]更改为()即为一个generator
1 def fib(max): 2 n,a,b = 0,0,1 3 while n<max: 4 print(b) 5 a,b = b,a+b 6 n += 1 7 return done
②将函数中print(b)改为yield b即为一个generator
在成为generator的函数中每次调用next()时开始执行,遇到yield返回,重新开始执行时从上个yield结束处开始执行(常与循环配合使用)
yield 后面是返回的内容
(想要实现某个函数:用变量代入表达,逐个生成)
杨辉三角
def tringle(): L = [1] n = 0 while n<10: yield L L = [1] + [L[i-1] + L[i] for i in range(1,len(L))] + [1] n += 1
range(1,1) = []
3 迭代器
可迭代的对象(数据类型)称为Iterable
from collections import Iterable
isinstance({},Iterable) #判断对象是否为Iterable 对象可以是generator等
可以被next()函数调用并不断返回下一个值的对象称为Iterator(迭代器)