2017-12-04 2 views
0

私はプログラミングの学生で、私は最近Pythonで作業を始めました。私は非常に異なったアプローチをしているラケットを学び始めました。 for文と組み合わせて再帰を使用しようとしているうちに、 "IndexError:リストの範囲外のリストを表示"しました。私は、非常に高く評価されるだろう range(len(l) - 1) ヘルプの間に少なくともいない、再帰時に私の機能が低下し、リストを取らないと考え、事前にあなたに感謝"IndexError:リストのインデックスが範囲外です"リストで再帰を使用しているとき

def search_matching_pokemon(p, l): 
    lp = [] 
    for i in range(len(l) - 1): 
     if p[-1] == l[i][0]: 
      print ('Found one') 
      poke = l.pop(i) 
      lp = lp + [poke] 
      print (f'List is now {lp}') 
      search_matching_pokemon(poke, l) #problem with the range 
     else: 
      print ('Trying a different pokémon') 
    return lp 

:これは私のコードです。

+0

ここで再帰を使用する理由は本当にありません。入力例は何ですか? – roganjosh

+0

反復処理中のリストから項目を削除しています。その結果、観測されたIndexErrorが発生します。 –

答えて

0

リスト "l"が空になり、まだループのために実行しようとしています。リストが空のときにこのループを実行しないでください。 また、ループは範囲内のi(len(l))でなければなりません。

0

詳細はわかりませんが、繰り返し処理している間にリストからポップしているようです。繰り返しますが、何をしようとしているかのような詳細な情報がなくても、これを修正する方法がわかりません。

+0

私はリストを通して経路問題を解決しようとしていました。 Rakshithは正しかったが、助けてくれてありがとう! – Leonard

関連する問題