Python中常见生成器问题有哪些解决方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计544个文字,预计阅读时间需要3分钟。
在Python中,生成器和函数看似相似,但它们在执行过程中有所不同。生成器会在运行过程中才确定各种变量的值,因此在多种情况下可能导致各种问题。以下是一个生成器的示例:
pythondef generator_test1():
在Python中,生成器和函数很像,都是在运行的过程中才会去确定各种变量的值,所以在很多情况下,会导致各种各样的问题。
def generator_test1(): # 0...9 generator x = (i for i in range(10)) # 5..9 generator x_filter = filter(lambda y: y >= 5, x) # first use the x L = list(x) print("L, x", L) # then use x_filter l = list(x_filter) print("l, x_filter", l) if __name__ == "__main__": generator_test1()
输出结果为:
L, x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l, x_filter []
上述代码中,x_filter是基于生成器x构建的生成器,但是由于x在x_filter使用之前先被用掉了,所以在使用x_filter的时候,才去获取x的值,而此时x已经用完了,最终导致x_filter转化成的列表是空的。
本文共计544个文字,预计阅读时间需要3分钟。
在Python中,生成器和函数看似相似,但它们在执行过程中有所不同。生成器会在运行过程中才确定各种变量的值,因此在多种情况下可能导致各种问题。以下是一个生成器的示例:
pythondef generator_test1():
在Python中,生成器和函数很像,都是在运行的过程中才会去确定各种变量的值,所以在很多情况下,会导致各种各样的问题。
def generator_test1(): # 0...9 generator x = (i for i in range(10)) # 5..9 generator x_filter = filter(lambda y: y >= 5, x) # first use the x L = list(x) print("L, x", L) # then use x_filter l = list(x_filter) print("l, x_filter", l) if __name__ == "__main__": generator_test1()
输出结果为:
L, x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l, x_filter []
上述代码中,x_filter是基于生成器x构建的生成器,但是由于x在x_filter使用之前先被用掉了,所以在使用x_filter的时候,才去获取x的值,而此时x已经用完了,最终导致x_filter转化成的列表是空的。

