小编典典

追加到子列表追加到每个子列表

python

我正在编写一个包含10个存储桶列表的简单哈希表。使用内置函数计算索引hash(),然后对表大小取模。但是,当我尝试将对象附加到该索引的存储桶列表时,它会附加到每个存储桶列表。我尝试用不同的方式定义add_HT,但我一直得到相同的结果。我究竟做错了什么?

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']]

阅读 240

收藏
2021-01-20

共1个答案

小编典典

HT = [ [] ] * size使size指向 同一列表 的指针数量增加。add_HT这里不是问题。您需要定义HT[[] for i in xrange(size)]

2021-01-20