循环遍历python中的列表

时间:2016-02-05 00:48:22

标签: python

我尝试使用线性探测实现可清除列表。 我的哈希键是key%tablesize

基本上,我无法弄清楚当发生碰撞时如何遍历列表中的其他元素。我写过:

def hash_linear(key, values):
    tablesize=len(values)
    index=key%tablesize

    if values[index]==None:
        values[index]=key

    else:
        while values[index]!=None:
            index+=1

        values[index]=key
    return values

我知道问题是索引不断增加,但我不知道如何停止索引并在它到达列表中的最后一个索引时再次启动它?

2 个答案:

答案 0 :(得分:1)

使用modulo,使用列表的长度来包围:

In [15]: l = [1,2,3]

In [16]: l[4 % len(l) ]
Out[16]: 2
In [17]: l[1 % len(l) ]
Out[18]: 2

答案 1 :(得分:1)

我想你想要以下::

while values[index] is not None:
    index = (index+1)% len(values)