python - 如何跳过列表索引超出范围错误而不是立即停止代码?
问题描述
一旦我将中心与列表的元素进行比较,我经常会得到一个列表索引超出范围的错误。但是,我认为这意味着代码会简单地忽略丢失的内容并运行代码,但事实并非如此。我该如何做到这一点?
这是代码:
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
解决方案
生成 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
推荐阅读
- discord.js - Discord bot 未提及 msg.author.username
- c# - if 语句中的 C# 6.0 空条件运算符
- php - 我应该如何在 PHP 中使用 CURL 来保存可以从中下载文件的链接
- javascript - 赛普拉斯从 JSON 中插入错误数据
- ios - IOS 14.5 上的 TabView 中的图像无法调整大小
- javascript - 如何根据 csv 中的值将这个 csv 字符串(也是 csvs)减少为一个对象嵌套 4 层深的数组?
- php - 在 PHP (CodeIgniter) 中匹配 2 个不同的 foreach 循环中的 ID
- docker - docker 将 build arg 传递给需要在 docker 构建期间运行的 shell 脚本
- javascript - React 突然抛出 ''Box' 指的是一个值,但在这里被用作一种类型。你是说'typeof Box'吗?错误
- javascript - 如何从 HTML 页面中分离 php 代码?