代码如下:
def _odd_iter():
n = 1
while True:
n = n + 2
yield n
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(_not_divisible(n), it)
for n in primes():
if n < 10:
print(n)
else:
break
1。我想知道这个练习的过程是什么,我被困在了
it = _odd_iter()
和
it = filter(_not_divisible(n), it)
它存储的值是列表还是类似的东西?
答案 0 :(得分:0)
对于第一部分,filter()返回一个过滤器对象(它是一个迭代器)而不是列表
>>> filter(lambda x : x < 5 , [1,2,3,4,5,6,7,8])
<filter object at 0x7eff8b5922e8>
>>> list(filter(lambda x : x < 5 , [1,2,3,4,5,6,7,8]))
[1, 2, 3, 4]
您可以检查python docs以获得更多信息。这仅在Python3中。
第二部分相似。 filter()将迭代生成器,并创建另一个包含过滤数据的迭代器。