(Это профессиональная практика / интерес, а не домашняя работа)
INPUT : любая неупорядоченная последовательность или генератор items , функция myfilter (item) возвращает True, если условие фильтра выполнено
ВЫХОД : (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))