2017-03-08 127 views
2

我写了这个程序:蟒蛇:IndexError:列表分配索引超出范围

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 

,请你有什么解决方案?

+3

你怎么想恰恰在这一步'德尔L [分钟(L)]'怎么办?考虑列表'[10,20,30]'现在图像'德尔升的执行[分钟(L)]'。这将是'德尔升[10]',但没有在列表中第10元件,因而示出了错误 – ZdaR

+1

假设l为[23,42,99]。然后'德尔升[分钟(升)]'相当于'德尔升[23]',它相当于“删除升的第24元素”。但我没有24个元素,它有三个元素。 – Kevin

回答

2

您的问题是del l[min(l)]试图在指数min(l)引用列表项。让我们假设你的列表中有3项:

l = [22,31,17] 

试图索引min(l)在删除的项目引用指数17,这不存在。只有索引0,1和2存在。

我想你想要做的是从列表的顺序删除最小项。有很多方法可以做到这一点。这是最接近你所写的内容的方法是:

for i in range(N): 
    l.remove(min(l)) 
    print(l) 
2

变化

del l[min(l)] 

del l[l.index(min(l))] 

原因:因为您要删除元件保持指数分钟元件和指数=分钟元件

O/P:(用于输入1 2 3 4 5)

[2,3,4,5]

[3,4,5]

[4,5]

[5]

[]

相关问题