Если вы не можете ничего о порядке вещей предположим, то вы не можете логически сделать это, не читая один из генераторов полностью в list
(или a set
, что может иметь смысл, если вам не нужны дубликаты внутри одного генератора).
Чтобы проиллюстрировать это, предположим, что единственными двумя идентичными элементами были первый элемент одного генератора и последний элемент другого генератора (но вы не знаете, что именно). Вы должны полностью исчерпать один из генераторов, чтобы убедиться, что знаете, какие общие элементы есть.
Как это сделать с set
с:
>>> import random
>>> a = (random.randint(1, 50000) for _ in xrange(300))
>>> b = (random.randint(3500, 3700) for _ in xrange(50))
>>> set(a).intersection(set(b))
set([])
>>> a = (random.randint(1, 50000) for _ in xrange(300))
>>> b = (random.randint(3500, 3700) for _ in xrange(50))
>>> set(a).intersection(set(b))
set([3634])
Возможно, вы бы изменить это и опубликовать немного больше информации и некоторый код? – octopusgrabbus
Определите «общий». Вы спрашиваете, как найти союз между двумя генераторами? –
Я обновил вопрос, чтобы сделать его более понятным. –