python-3.x - 比较列表中的 int 值会引发索引超出范围错误
问题描述
我正在努力解决这里的问题。我已经尝试了一切,但问题仍然存在。基本上我有一个随机数列表,当我尝试比较循环内的值时,它会抛出“IndexError:列表索引超出范围”
我什至尝试使用 range(len(who) 和 len(who) 。同样的事情。当把 0 改为 int 变量的“currentskill”时它可以工作。我不明白为什么比较两个值会抛出这个错误。它只是没有意义...
我不是在比较一个值,而是在比较索引本身???
编辑:我什至尝试使用 print(i) / print(who[i] 来查看一切是否干净以及停止的位置,而且我绝对不会超出索引
who = [2, 0, 1]
currentskill = 1
for i in who:
if who[i] == currentskill: # IndexError: list index out of range
who.pop(i)
解决方案
问题是一旦你开始弹出元素列表大小就会变化
例如,获取大小为 6 的列表,但是您遍历所有索引,直到 len(l)-1 = 6-1 = 5,并且在前一次迭代中删除元素后,索引 5 不存在于列表中。
此问题的解决方案,l = [x for x in l if x] 这里 x 是您要在您正在迭代的列表元素上实现的条件。
推荐阅读
- gatsby - 如何在 gatsby 中以编程方式创建的页面之上创建自定义路由
- c++ - Why does not AVX further improve the performance compared with SSE2?
- javascript - 在 JavaScript 中是否有用于检查字符串参数是否仅包含数字的函数?
- python - 如何清理 HTML 删除重复的段落?
- java - 我的 Android 应用程序不断停止;是因为我因为找不到证书文件而收到 GPRC 错误吗?
- java - JMH 错误注释生成器已引发异常。java.lang.ClassCastException
- java - 从 Intellij 编译项目时,在 Maven 项目中获取“没有为模块定义 groovy 库”
- list - Flutter/Dart - 如何使用 onPressed 和 flutter_Swiper 包中的 flatButton 播放列表中的声音?
- java - 考虑最接近的十分之一来计算华氏度到摄氏度
- android - ScrollView 不滚动 - ReactNative