我写了这个程序:
l = []
N = int(input("enter the size of the list"))
if N < 50:
for i in range(N):
a = int(input("add a number to the list"))
l.append(a)
for i in range(N):
del l[min(l)]
print(l)
当我运行它时,他们说
Traceback (most recent call last):
File "<pyshell#5>", line 2, in <module>
del l[min(l)]
IndexError: list assignment index out of range
请你有任何解决方案吗?
答案 0 :(得分:2)
您的问题是min(l)
正在尝试引用索引l = [22,31,17]
的列表项。我们假设您的列表中有3个项目:
min(l)
尝试删除索引for i in range(N):
l.remove(min(l))
print(l)
处的项目是引用索引17,该索引不存在。仅存在索引0,1和2。
我认为您要做的是按顺序删除列表中的最小项目。有很多方法可以做到这一点。与您所写的最接近的方法是:
{{1}}
答案 1 :(得分:2)
更改
del l[min(l)]
到
del l[l.index(min(l))]
原因:因为您要删除元素持有索引 min元素而不 index = min元素
O / P :(输入1 2 3 4 5)
[2,3,4,5]
[3,4,5]
[4,5]
[5]
[]