6. 生成器表达式
作用:
用推导式形式创建一个新的生成器。
语法
( 表达式1
for 变量1 in 可迭代对象1 [if 真值表达式1]
[for 变量2 in 可迭代对象2 [if 真值表达式2]]* )
说明
- 中括号内部的子句可以省略。
*
代表子表达式可以有0个、1个或多个。
示例
# 生成器表达式示例
# 创建一个 0 ~ 1000000000000000000 这些数的平方的生成器,
# 并用print函数打印这些数。
for x in ( n ** 2 for n in range(0, 1000000000000000000)):
print(x)
练习
写一个函数 is_prime(x) 判断x是否是素数,如果是素数返回True,否则返回False。
用is_prime函数,结合生成器表达式,创建一个能生成100以内所有素数的生成器,并打印出结果。
参考答案:
# 练习:生成器表达式-参考答案
def is_prime(x):
if x <= 1:
return False
for i in range(2, x):
if x % i == 0:
return False
return True
for prime in (n for n in range(100) if is_prime(n)):
print(prime)