6. 生成器表达式

作用:

用推导式形式创建一个新的生成器。

语法

( 表达式1
    for 变量1 in 可迭代对象1 [if 真值表达式1]
        [for 变量2 in 可迭代对象2 [if 真值表达式2]]* )

说明

示例

# 生成器表达式示例

# 创建一个 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)