为什么集合比python中的列表大?

ban*_*anx 10 python list set

为什么Python中的集合大小明显大于具有相同元素的列表的大小?

a = set(range(10000))
b = list(range(10000))
print('set size = ', a.__sizeof__())
print('list size = ', b.__sizeof__())
Run Code Online (Sandbox Code Playgroud)

输出:

set size = 524488
list size = 90088
Run Code Online (Sandbox Code Playgroud)

Dav*_*ebb 16

set比使用更多的内存list,因为它存储所有元素的哈希表,因此它可以快速地检测重复条目等.这就是为什么每个组成员必须hashable.