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

Python 如何跳过列表索引超出范围的错误,而不是立即停止代码?,python,python-3.x,list,python-2.7,Python,Python 3.x,List,Python 2.7,一旦我将中心与列表的元素进行比较,我经常会得到一个列表索引超出范围的错误。但是,我假设这意味着代码将忽略缺少的内容并运行代码,而事实并非如此。我如何做到这一点 代码如下: 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(cent

一旦我将中心与列表的元素进行比较,我经常会得到一个列表索引超出范围的错误。但是,我假设这意味着代码将忽略缺少的内容并运行代码,而事实并非如此。我如何做到这一点

代码如下:

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

随机导入
def cons(lst):
打印(lst)
smoll=[]
大=[]
a=random.randint(0,len(lst)-1)
印刷品(a)
中心=lst[a]
打印(中间)
1.拆卸(中间)
打印(lst)
对于范围内的y(透镜(lst)-1):
如果len(lst)>0:
如果lst[y]>中心:
大+=[lst[y]]
elif lst[y]<中心:
smoll+=[lst[y]]
lst.移除(lst[y])
如果len(lst)>0:
返回错误
最后一个=反面(烟雾)+[中间]+反面(大)
如果finaLst[len(finaLst)-1]-finaLst[0]==len(finaLst):
返回真值

生成索引器的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
lst中项目的
:
如果项目>中心:
大。追加(项目)
elif项目<中心:
smoll.append(项目)
如果len(大)+len(斯莫尔)
生成索引器的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
lst中项目的
:
如果项目>中心:
大。追加(项目)
elif项目<中心:
smoll.append(项目)
如果len(大)+len(斯莫尔)
您可以使用
try
except
处理
索引器
(和其他)异常。您可以使用
try
except
处理
索引器
(和其他)异常。