mã đơn giản:Chức năng nào được sử dụng để kiểm tra xem hai đối tượng có khác nhau không?
>>> set([2,2,1,2,2,2,3,3,5,1])
set([1, 2, 3, 5])
Ok, trong các bộ kết quả không có bản sao. Điều gì xảy ra nếu đối tượng trong danh sách không phải là int nhưng một số được xác định bởi tôi? Phương pháp nào kiểm tra xem chúng có khác nhau không? Tôi đã triển khai __eq__ và __cmp__ với một số đối tượng nhưng đặt dường như không sử dụng chúng: \
Có ai biết cách giải quyết vấn đề này không?
"khi và chỉ khi" chẳng có ý nghĩa, mặc dù. Hàm băm có thể được sử dụng để chọn trước các mục bằng nhau, nhưng chắc chắn so sánh trực tiếp các giá trị thực tế cũng phải xảy ra, hoặc kết quả của các so sánh được đặt sẽ là ngẫu nhiên. –
Từ tài liệu python: Một đối tượng có thể băm nếu giá trị băm không bao giờ thay đổi trong suốt vòng đời của nó (nó cần phương thức __hash __()) và có thể so sánh với các đối tượng khác (cần __eq __() hoặc __cmp __() phương pháp). Các đối tượng có thể băm được so sánh bằng nhau phải có cùng giá trị băm. –
được chỉnh sửa trong phản hồi của roberto. – TheSoftwareJedi