Discuss / Python / filter 问题

filter 问题

Topic source

net小伙

#1 Created at ... [Delete] [Delete and Lock User]

文中使用 it = filter(_not_divisible(n), it) # 构造新序列

在小结中又有说明:由于filter()使用了惰性计算,所以只有在取filter()结果的时候,才会真正筛选并每次返回下一个筛出的元素。

然而 it 是一个无限的list,那么每次调用 filter 的时候是为list添加一条规则呢?还是真正的把it中不符合条件的所有元素全部删除?如果是后者那岂不是删除到海枯石烂了。如果是前者在循环取数据的时候,是不是循环的次数越多添加的规则越多?

求解!!!

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

你只要理解某一层的filter就行了,递归算法保证里面每一层都是正确的,惰性算法保证调用时才触发必要的计算


  • 1

Reply