我正在编写一个包含10个存储桶列表的简单哈希表。使用内置函数计算索引hash(),然后对表大小取模。但是,当我尝试将对象附加到该索引的存储桶列表时,它会附加到每个存储桶列表。我尝试用不同的方式定义add_HT,但我一直得到相同的结果。我究竟做错了什么?
hash()
size = 10 HT = [ [] ] * size def add_HT(data): index = hash(data) % size HT[index].append(data) print HT [[], [], [], [], [], [], [], [], [], []] add_HT('hello') [['hello'], ['hello'], ['hello'], ['hello'], ['hello'], ['hello'], ['hello'], ['hello'], ['hello'], ['hello']]
HT = [ [] ] * size使size指向 同一列表 的指针数量增加。add_HT这里不是问题。您需要定义HT为[[] for i in xrange(size)]。
HT = [ [] ] * size
size
add_HT
HT
[[] for i in xrange(size)]