rint("********什么是生成器表达式********")
#生成器表达式是在 Python 中创建迭代器的一种简洁方法。
#生成器表达式形式为使用圆括号括起来的一个for循环及其后面的条件表达式
#语法:(expression for item in iterable if condition)
#类似于列表推导式,但它不是创建列表,而是创建一个可以迭代的生成器对象。
#生成器表达式不在内存中创建列表,而是创建一个可以迭代的生成器对象,处理大数据时非常节省内存。
#使用生成器对象的元素时,可以根据需要将其转化为列表或元组。
#也可以使用生成器对象的__next__()方法或者内置函数next()进行遍历,
#或者直接使用for循环来遍历其中的元素。
#但是不管用哪种方法访问其元素,只能从前往后正向访问每个元素,
#不能再次访问已访问过的元素,也不支持使用下标访问其中的元素。
#当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象,
#enumerate、filter、map、zip等其他迭代器对象也具有同样的特点。
print("\n")
print("********生成器表达式实际应用举例********")
#生成一个列表,为0到9中偶数的平方
gen1 = (i**2 for i in range(10) if i%2 ==0)
print(gen1) #<generator object <genexpr> at 0x0000020D3C62E930>
print(list(gen1)) #[0, 4, 16, 36, 64]
#等价于下面不使用表达式的写法
def fib(n):
for i in range(n+1):
if i % 2 == 0:
yield i**2
print(list(fib(9)))
网友评论