2017-11-27 5 views
-1

私はこれをループのために使い続けています。実際にはさまざまなforループです。私は、 '範囲外のリストのインデックス'というエラーが出ています。いい考えはありません。わかりにくい、単純な 'リ​​ストインデックスが範囲外です' - Python

for q in range(0, len(list(package_ids))-1): 
     if (q==0): 
      query = 'Zero' + package_ids[q] 
     else: 
      query = 'More' + package_ids[q] 
+1

どのようなタイプが 'package_ids'ですか? –

+0

なぜlen(list(package_ids))から '1'を減算していますか? – donkopotamus

+0

例えば、値が – mjabraham

答えて

3

package_idsは発電機であり、項目の数を見つけるために、リストへの変換が[]を公開していません反復可能それを使い果たし、またはおそらくその単純にしていること、その可能性が高いです。どんな場合でも、コードは次のように表現されます:

for q, x in enumerate(package_ids): 
    if q == 0: 
     query = 'Zero' + x 
    else: 
     query = 'More' + x 

これは、ジェネレータを含む任意のタイプの繰り返し可能なものを処理します。

あるいはより簡潔な:これについて

for q, x in enumerate(package_ids): 
    query = ('More' if not q else 'Zero') + x 
+0

:-(私は早くもそれをやってみましたが、後でもう一度やってみました。リストのインデックスが範囲外になっています – mjabraham

+0

もっと助けが必要な場合は、本当のトレースバックか 'pacakge_ids'のタイプを提供する方が良いでしょう。上記のコードでは「リストインデックス」は絶対にありませんので、上記のようなエラーが発生した場合は、別のコードの中に入れなければなりません。 – donkopotamus

0

か?

 



    for q in range(len(package_ids)): 
     if (q==0): 
      query = 'Zero' + package_ids[q] 
     else: 
      query = 'More' + package_ids[q] 

 
関連する問題