2017-03-08 7 views
2

のうちリスト割り当てインデックスiは、このプログラムを書いた:のpython:は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]

[]

関連する問題