首页 > 解决方案 > 如何跳过列表索引超出范围错误而不是立即停止代码?

问题描述

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

这是代码:

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

标签: pythonpython-3.xlistpython-2.7

解决方案


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

 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

推荐阅读