Сравнение двух генераторов в Python

Меня интересует использование ==при сравнении двух генераторов

Например:

x = ['1','2','3','4','5']

gen_1 = (int(ele) for ele in x)
gen_2 = (int(ele) for ele in x)

gen_1и gen_2одинаковы для всех практических целей, и все же, когда я сравниваю их:

>>> gen_1 == gen_2
False

Я предполагаю, что здесь ==трактуется как isобычно is, а так как gen_1и gen_2расположены в разных местах памяти:

>>> gen_1
<generator object <genexpr> at 0x01E8BAA8>
>>> gen_2
<generator object <genexpr> at 0x01EEE4B8>

их сравнение дает False. Я прав в этом предположении? И любое другое понимание приветствуется.

И кстати, я знаю, как сравнивать два генератора:

>>> all(a == b for a,b in zip(gen_1, gen_2))
True

или даже

>>> list(gen_1) == list(gen_2)
True

Но если есть лучший способ, я хотел бы знать.

24
задан juliomalegria 2 April 2012 в 20:50
поделиться