Мне интересно об использовании ==
при сравнении двух генераторов
Например:
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
обычно, и поскольку 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
Но если есть лучший способ, я хотел бы знать.