列表表达式,生成器表达式,
列表表达式
#普通代码 result=[] for i in [1,2,3] result.append[i*i] print(result) #列表表达式 print([i*i for i in [1,2,3]])
生成器表达式:
把列表解析的[]换成()得到的就是生成器表达式;列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存
laomuji=('鸡蛋%s' %i for i in range(10)) #生成器表达式 print(laomuji) #返回生成器地址<generator object <genexpr> at 0x000001E17AF23BA0> print(next(laomuji)) #输出结果为:鸡蛋0 print(laomuji.__next__()) #输出结果为:鸡蛋1 print(next(laomuji)) #输出结果为:鸡蛋2 #next(laomuji)等价于laomuji.__next__()
列表表达式与生成器表达式之间互转:
print([i/2 for i in range(100)]) # 列表表达式 list = (i/2 for i in range(100)) # 生成器表达式 print(list.__next__()) print([i*i for i in range(30) if i % 3 is 0]) list = (i*i for i in range(30) if i % 3 is 0) print(list.__next__())