[英]Common items in two Python generators
除了將其中一個讀入列表之外,還有沒有辦法在兩個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?
如果您不能承擔有關項目的順序東西,那你就不能在邏輯上做到這一點沒有閱讀一台發電機完全成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])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.