Mi domando circa l'uso di ==
quando si confrontano i due generatoriConfrontando due generatori in Python
Ad esempio:
x = ['1','2','3','4','5']
gen_1 = (int(ele) for ele in x)
gen_2 = (int(ele) for ele in x)
gen_1 e gen_2 sono uguali per tutti gli scopi pratici, e ancora quando li paragono:
>>> gen_1 == gen_2
False
La mia ipotesi qui è che ==
qui viene trattato come is
normalmente è, e poiché gen_1 e gen_2 si trovano in luoghi diversi nella memoria:
>>> gen_1
<generator object <genexpr> at 0x01E8BAA8>
>>> gen_2
<generator object <genexpr> at 0x01EEE4B8>
loro confronto restituisce False
. Ho ragione su questa ipotesi? E ogni altra intuizione è benvenuta.
E btw, io so come confrontare due generatori:
>>> all(a == b for a,b in zip(gen_1, gen_2))
True
o anche
>>> list(gen_1) == list(gen_2)
True
Ma se c'è un modo migliore, mi piacerebbe sapere.
Pensa all'espressione di un generatore come se fosse una funzione, non come una lista. – agf
una volta confrontati i generatori li esaurisci e poi diventano vuoti –