语法一:[ 表达式 for 变量 in 旧列表 ]
例如生成一个[1,2,3,4,5,6,7]
列表
[x for x in range(1,8)]
或者生成一个[1,4,9,16,25,36,49,64,81]
的列表
[x*x for x in range(1,10)]
语法二:[ 表达式 for 变量 in 旧列表 if 条件 ]
筛选出[1,2,3,4,5,6,7,8,9]
列表中所有偶数
a = [1,2,3,4,5,6,7,8,9]
[x for x in a if x%2==0]
(x for x in range(1,10))
next( ) 可以顺序获取生成器中的值
语法:next(生成器)
a = (x for x in range(1,10))
b = next(a)
b为:1
如果想获取a中的第4个值,只需要添加一个循环
a = (x for x in range(1,10))
k = 4
while k>0:
k -= 1
b = next(a)
此时a中的值为:4
__ next __( )函数 也可以顺序获取生成器中的值
语法:生成器.__next __( )
用法和next( )一样
yield关键字
只要在函数中添加了yield关键字,就变成了一个(生成器函数)
def fn():
n = 0
while True:
n += 1
yield n
a = fn()
b = next(a)
取值和生成器一样
其中yield相当于 return+暂停