python - 我想使用 for 循环从列表中删除重复项。我在这里遇到索引超出范围错误:if lst[i]==lst[j]:
问题描述
我已经声明了一个列表并对其进行了排序。在迭代第二个 for 循环时,我得到 :index out of range 错误。
lst=[]
for i in range(5):
a=int(input())
lst.append(a)
lst.sort()
print(lst)
for i in range(0,len(lst)):
j=i+1
for j in range(len(lst)):
if lst[i]==lst[j]:
print("hii")
lst.pop(j)
print(lst)
解决方案
当您从它的长度更改中删除元素时,lst
因此您的迭代在尝试访问空索引时会中断:“索引超出范围”
如果你想保持你的结构,你可以捕捉它并使用 IndexError 上的 try/catch 退出循环,但这真的很难看。
一个更 Pythonic 的解决方案是简单地将您的列表转换为一个集合,然后返回到列表。这是有效的,因为集合删除了所有重复的元素:
>>> list(set([1, 1, 2, 2, 3, 4,]))
[1, 2, 3, 4]
推荐阅读
- python - Tensorflow 安装问题:ImportError: DLL load failed with error code -1073741795
- r - R中有序分类数据的因子分析的因子得分
- c# - 什么是 Identity Server 4 引发事件
- keras - Keras:处理大型图像数据集
- regex - 正则表达式强制组顺序
- google-bigquery - 无法在 appengine 中使用 bigquery:“ImportError:没有名为 google.cloud.bigquery 的模块”
- r - 为什么 abline 不会显示 glm 与 Gamma 家族的线?
- python - 为什么最后的代码会给出奇异矩阵错误?
- vue.js - 具有线性渐变背景和图像的 NativeScript-Vue 按钮
- c++ - 稀疏矩阵构造函数不在对象中存储参数