2010-08-28 30 views
9

Tại sao kích thước của bộ trong Python lớn hơn đáng kể so với các danh sách có cùng phần tử?Tại sao các tập hợp lớn hơn các danh sách trong python?

a = set(range(10000)) 
b = list(range(10000)) 
print('set size = ', a.__sizeof__()) 
print('list size = ', b.__sizeof__()) 

đầu ra:

set size = 524488 
list size = 90088 
+2

Tại sao '9999 trong a' chạy nhanh hơn '9999 trong b'? –

+0

Danh sách python được thực hiện như một mảng động, thẳng thắn hầu hết các cấu trúc dữ liệu (ngoại trừ tuple) sẽ tốn nhiều bộ nhớ hơn. –

Trả lời

15

Các set sử dụng bộ nhớ nhiều hơn list vì nó lưu trữ một bảng băm của tất cả các yếu tố để nó có thể nhanh chóng phát hiện các mục trùng lặp và vân vân. Đây là lý do tại sao mọi thành viên được đặt phải là be hashable.

Các vấn đề liên quan