2017-03-08 2 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)]'에서 수행 할 수 있습니까? '[10, 20, 30]'리스트에서'del l [min (l)]'의 이미지를 상상해보십시오. 이것은 del l [10] 일 것이지만 목록에 10 번째 요소가 없으므로 – ZdaR

+1

을 보여줍니다. l이 [23, 42, 99]라고 가정합니다. 그러면 del l [min (l)]은 'del l [23]'과 동일하다. 이것은 "l의 24 번째 원소 삭제"와 동일하다. 하지만 저는 24 가지 요소가 없으며 3 가지 요소가 있습니다. – Kevin

답변

2

del l[min(l)]min(l)의 목록 항목을 참조하려고합니다. 의이 목록이 3 개 항목이 있다고 가정 해 봅시다 : 인덱스 min(l)에있는 항목을 삭제하려고

l = [22,31,17] 

가 존재하지 않는 인덱스 (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]

[]