python的语法比较随意,为了简洁有许多生成表达式
如:
列表生成表达式 list = [i for i in range(10)]
加判断 list = [i for i in range(10) if i % 2 ==0]
多层循环 list = [i for in range(10) for j in range(i) ]
一般大公司为了代码清晰易懂,是不允许多层循环的,但是语法上并没有问题
字典生成表达式 d = {i : i+10 for i in range(10)}
生成器表达式 g = (i for i in range(10))
使用小括号,返回的是生成器,它无法通过直接打印就获得内部的值,而需要调用__next__方法或者使用for循环,使用for循环的本质也是调用__next__方法
print(g)这是什么都不打印的
print(g.__next__())OK
for i in g:
print(i) OK
它的特点是占用内存固定,比如说你有个100g的文件,显然无法把它读进8g的内存中,这时可以使用生成器表达式去一块一块的去读,读完一次就删除