(这是专业的最佳实践/模式兴趣,不是家庭作业要求)
INPUT:任何无序序列或生成器项目,如果满足过滤条件,函数myfilter(item)返回 True
OUTPUT : (filter_true, filter_false)原始类型序列的元组,其中包含根据原始序列顺序的过滤器划分的元素。
如果不进行双重过滤,您将如何表达这一点,或者我应该使用双重过滤?也许过滤器和循环/生成器/列表理解next
可以回答?
我应该去掉保持类型的要求还是只是改变要求给出元组/生成器结果的元组,我不能轻易地为生成器输入返回生成器,或者我可以吗?(要求为自制)
这里测试目前最好的候选人,提供两个流而不是元组
import itertools as it
from sympy.ntheory import isprime as myfilter
mylist = xrange(1000001,1010000,2)
left,right = it.tee((myfilter(x), x) for x in mylist)
filter_true = (x for p,x in left if p)
filter_false = (x for p,x in right if not p)
print 'Hundred primes and non-primes odd numbers'
print '\n'.join( " Prime %i, not prime %i" %
(next(filter_true),next(filter_false))
for i in range(100))