2012-01-26 17 views
1

2つのPythonジェネレータで共通項目を検索する方法はありますか?あなたは商品の注文について何も想定することはできません。悪い例として2つのPythonジェネレータの共通項目

:あなたがアイテムの順序については何も仮定できない場合

import random 
a = (random.randint(1, 50000) for _ in xrange(300)) 
b = (random.randint(3500, 3700) for _ in xrange(50))  

# do A and B have any elements in common? 
+0

おそらく、あなたはこれを編集して、少しより多くの情報といくつかのコードを投稿しますか? – octopusgrabbus

+0

「共通」を定義します。あなたは2つの発電機の組合を見つける方法を尋ねていますか? –

+0

質問をもっと明確にするように更新しました。 –

答えて

4

、その後、あなたは論理的に完全にlistに発電機の1を読まずにこれを行うことはできません(またはset)を使用してください。これは、1つの発電機内で重複を気にしなくても意味があります。

これを説明するために、2つの同一の要素が1つのジェネレータの最初の項目と他のジェネレータの最後の項目であったとします。どの共通要素があるかを確認するために、ジェネレータの1つを完全に使い果たしておく必要があります。

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]) 
+2

fwiwの交点は、set(a)&set(b)としてもっと簡潔に行うことができます... –

関連する問題