簡體   English   中英

兩個Python生成器中的常見項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM