Если вы не можете предположить что-либо о порядке элементов, то вы не можете логически сделать это, не считав один из генераторов целиком в list
(или set
, что может иметь больше смысла, если вы не заботятся о дубликатах в одном генераторе).
Чтобы проиллюстрировать это, давайте предположим, что только два идентичных элемента были первым элементом одного генератора и последним элементом другого генератора (но вы не знаете, какой именно). Вам нужно полностью израсходовать один из генераторов, чтобы убедиться, что вы знаете, какие есть общие элементы.
Как это сделать с set
s:
>>> 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])