gpt4 book ai didi

python-3.x - 编写删除重复元素的程序时列出索引超出范围

转载 作者:行者123 更新时间:2023-12-04 10:21:02 27 4
gpt4 key购买 nike

我正在尝试删除重复的元素,但它在 l=n[i] 处显示列表索引超出范围错误

n=list(input().split())

for i in range(len(n)):
l=n[i]
for j in range(len(n)):
if(j!=i):
if(l==n[j]):
n.pop(j)

print(n)

最佳答案

它显示错误,因为您 pop来自内部的元素,它在迭代时改变了列表的大小。但是range函数仍然具有原始长度,因此给出了一个不再存在的索引。

您应该从不 在迭代列表时更改列表的长度(或字典的 keys)。

详细来说,让我们把你的 list n=[1,1,2,3] (说)。 i将在 range(3) 运行(即取值 0,1,2,3 )

现在,l=n[0], i.e. l=1 .然后在 j=1, n[j]=1 ,条件l==n[j]true你做 n.pop(1) .

所以现在,您的列表 n=[1,2,3]但是你最外层的循环仍然在 range(4)因此当你做 l=n[3] 时会出错自 n[3]不存在。

为避免这种情况,您有以下选择:

  • 将非重复元素推送到新列表中。 (或者,复制原始列表并从那里弹出)。
  • 使用 setlist , 如果你被允许使用它。

  • 另外,旁注: list(input().split())是对 list 的冗余调用构造函数。 .split()方法返回 list默认情况下。
    所以只是 n=input().split()足够。

    关于python-3.x - 编写删除重复元素的程序时列出索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60847539/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com