【问题标题】:Keep getting index error when I run my code [duplicate]运行代码时不断出现索引错误[重复]
【发布时间】:2021-05-01 16:47:13
【问题描述】:

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

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

【问题讨论】:

标签: python


【解决方案1】:

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

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

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

# or

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      if len(l) != 0:
      

      【讨论】:

        【解决方案4】:

        我会测试有 0 或 1 的情况并返回。

        ETA:当然 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([])))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-27
          • 1970-01-01
          • 1970-01-01
          • 2018-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多