tôi tự hỏi về việc sử dụng ==
khi so sánh hai máy phát điệnSo sánh hai máy phát điện bằng Python
Ví dụ:
x = ['1','2','3','4','5']
gen_1 = (int(ele) for ele in x)
gen_2 = (int(ele) for ele in x)
gen_1 và gen_2 là như nhau cho tất cả các mục đích thực tế, và nhưng khi tôi so sánh chúng:
>>> gen_1 == gen_2
False
Tôi đoán ở đây là ==
đây được đối xử như is
thường lệ là, và kể từ gen_1 và gen_2 được đặt tại nhiều nơi khác nhau trong bộ nhớ:
>>> gen_1
<generator object <genexpr> at 0x01E8BAA8>
>>> gen_2
<generator object <genexpr> at 0x01EEE4B8>
so sánh của họ để đánh giá False
. Tôi có đúng với dự đoán này không? Và bất kỳ cái nhìn sâu sắc khác được chào đón.
Và btw, tôi biết làm thế nào để so sánh hai máy phát điện:
>>> all(a == b for a,b in zip(gen_1, gen_2))
True
hoặc thậm chí
>>> list(gen_1) == list(gen_2)
True
Nhưng nếu có một cách tốt hơn, tôi rất muốn biết.
Hãy suy nghĩ về biểu thức trình tạo giống như một hàm, không giống như danh sách. – agf
khi bạn so sánh các máy phát, bạn xả chúng và sau đó chúng trở nên trống rỗng –