运行代码时不断收到索引错误

时间:2021-05-01 16:47:13

标签: python

如果假设有一个空列表,有谁知道为什么这段代码不起作用。当我对空列表运行测试时,它给我索引错误,指出它超出范围。

def dedup(l):
    dl = [l[0]]
    for v in l[1:]:
     if dl[-1] != v:
      dl.append(v)
    return dl 

4 个答案:

答案 0 :(得分:0)

如果列表为空,则 l[0] 不存在(没有第一个元素)。

您可以为此添加显式检查。

dl = [l[0]] if l else []

# or

if not l: return l
dl = [l[0]]

答案 1 :(得分:0)

这是因为在一个空列表中,您如何使用索引访问元素,因为其中没有元素。

当您使用 l[0] 时,将访问第一个元素。但是在空列表中没有第一个元素。因此错误的原因

答案 2 :(得分:0)

需要检查导入数组是否为空

if len(l) != 0:

答案 3 :(得分:0)

当有 0 或 1 时,我会测试这种情况并返回。

预计到达时间:当然 list(set()) 也有效。

def dedup(l):
    if len(l) < 2:
        return l
    dl = [l[0]]
    for v in l[1:]:
        if dl[-1] != v:
            dl.append(v)
    return dl

print(dedup([1, 1, 11, 3]))
print(dedup([]))

print(list(set([1, 1, 11, 3])))
print(list(set([])))
相关问题