(これはプロのベスト プラクティス/パターンの関心であり、在宅ワークの要求ではありません)
INPUT : 任意の順序付けられていないシーケンスまたはジェネレーター項目、関数myfilter(item)は、フィルター条件が満たされている場合に True を返します
OUTPUT : (filter_true, filter_false)元のシーケンス順でフィルターに従って分割された要素を含む、元の型のシーケンスのタプル。
二重フィルタリングを行わずにこれをどのように表現しますか、または二重フィルタリングを使用する必要がありますか? たぶん、フィルターとループ/ジェネレーター/リストの理解next
が答えになるでしょうか?
タイプを保持する要件を取り除くか、タプル/ジェネレーターの結果のタプルを与える要件を変更する必要がありますか?ジェネレーター入力に対してジェネレーターを簡単に返すことはできませんか? (要件は自作です)
タプルの代わりに2つのストリームを提供する、現時点での最良の候補のここでのテスト
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))