2017-10-31 8 views
0

私のコードで助けが必要です。 self.channels_indexの値がself.channel以上でない場合は、リストから要素を取り出すことができるかどうかを確認したいと思います。値がself.channelの値より大きい場合は、何もしないでください。Pythonのリストからインデックス値をチェックする方法

私がしようとすると、この:範囲外のリストインデックス:はIndexError:私はエラーになります

self.channels_Index += 1 

for index in enumerate(self.channel): 
    if index > self.channels_Index: 
     new_channel = self.channel[self.channels_Index] 

エラーは、この行にハイライトされている:

new_channel = self.channel[self.channels_Index] 

がリストから最後の要素の後には価値がありません。ここで

self.channelリストである:私は達成するために期待しています何

['101 BBC One S East', '102 BBC Two', '103 ITV', '104 Channel 4', '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic', '401 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', '406 Sky Sports News HQ', '407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', '413 Eurosport 1 UK', '414 Eurosport 2 UK', '415 BT Sport 1', '416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', '420 Chelsea TV', '421 Eir Sport 1', '422 Eir Sport 2'] 

は私が私まで値を使用して要素を取り出すことができるように値を追加し、self.channel値に確認するself.channels_indexを使用していますですそれは422 Eir Sport 2

あるリストから最後の要素を取得することができますあなたは私私は値が等しいかそこら最後の値以下である場合ことを確認するためにself.channel値に確認するself.channels_indexを使用する方法の例を示してくださいすることができ私はフェッチすることができます私はリストから最後の要素を取得するまで要素を?

+0

- それはあなたがそれが何を考えていないのです。

>>> L = ['hi', 'hello', 'hey'] >>> list(enumerate(L)) [(0, 'hi'), (1, 'hello'), (2, 'hey')] 

をあなたのforループで2つの変数を持つことによって、これを反映するようにコードを変更する必要があります! – alfasin

+0

"私が達成しようとしているのは、self.channels_indexを使用して値を追加し、self.channel値でチェックしているので、リストから最後の要素を取得できるまで値を使用して要素を取得できます422 Eir Sport 2 " - これは明らかではありません! – alfasin

+0

あなたはそれを手に入れませんか? –

答えて

1

enumerate()は、インデックスと値のリストを返します。お守り: `index`を印刷してみ

for index, val in enumerate(self.channel): 
    if index > self.channels_Index: 
     new_channel = val 
+0

ありがとうございますが、私は値を使ってリストから要素を取り出したいと思っています。例:値が「10」の場合、リストから「402 SKY Sports 2 UK」を取得します。だから、もし私が30という値を持っていたら、422 Eir Sport 2を取ってみたい。もし私が31という値を持っていれば、それより大きいものは何もしたくない。あなたが投稿したコードは、間違っているリストから最後の要素を取り出します! –

+0

私が達成したいのは、「108 Sky Atlantic」、「401 Sky Sports 1 UK」、「402 SKY Sports 2 UK」などの値を使ってリストから要素を取り出したいときです。値30は '422 Eir Sport 2'になります。私はこれがはっきりしていることを望む? –

関連する問題