如何跳过列表索引超出范围错误而不是立即停止代码?

Posted

技术标签:

【中文标题】如何跳过列表索引超出范围错误而不是立即停止代码?【英文标题】:How does one skip a list index out of range error rather than stop the code immediately? 【发布时间】:2020-04-22 14:39:09 【问题描述】:

一旦我将中心与列表的元素进行比较,我经常会得到列表索引超出范围的错误。但是,我认为这意味着代码会简单地忽略丢失的内容并运行代码,但事实并非如此。我该如何做到这一点?

代码如下:

import random
def cons(lst):
  print(lst)
  smoll = []
  big = []
  a = random.randint(0, len(lst)-1)
  print(a)
  center = lst[a]
  print(center)
  lst.remove(center)
  print(lst)
  for y in range(len(lst) - 1):
    if len(lst) > 0:
      if lst[y] > center:
        big += [lst[y]]
      elif lst[y] < center:
        smoll += [lst[y]]
    lst.remove(lst[y])
  if len(lst) > 0:
    return False
  finaLst = cons(smoll) + [center] + cons(big)
  if finaLst[len(finaLst) - 1] - finaLst[0] == len(finaLst):
    return True

【问题讨论】:

您可以使用try & except 处理IndexError(和其他)异常。 【参考方案1】:

生成 IndexError 的 for 循环写得不好,我会说这不是在从该列表中删除元素时迭代循环的最佳方法,这里是您的 for 循环块的等效代码,以避免索引错误:

 for item in lst:
    if item > center:
      big.append(item)
    elif item < center:
      smoll.append(item)

  if len(big) + len(smoll) < len(lst):
    return False

【讨论】:

以上是关于如何跳过列表索引超出范围错误而不是立即停止代码?的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas 索引错误:列表索引超出范围

Python - 索引错误 - 列表索引超出范围

当我遍历我的列表时,返回列表索引超出范围

Python:出现“列表索引超出范围”错误;我知道为啥但不知道如何解决

如何在 python 3.4 tkinter“索引错误:列表索引超出范围”中修复此错误

findspark.init() 列表索引超出范围错误