python:IndexError:列表赋值索引超出范围

时间:2017-03-08 18:46:46

标签: python

我写了这个程序:

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

请你有任何解决方案吗?

2 个答案:

答案 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]

[]