2017-11-10 7 views
-1

新しいPythonをここに変換してください。単に、openpyxlを使ってPythonでリストをループしようとしています。もちろん、私のリストには約100項目あり、私のコードにはより多くの条件があります。私はenumerateせずにしようとするとenumerateとopenpyxlを使ってPythonでリストをループする

lst = ['1','2','a','a12'] 

for value in enumerate(lst): 
    row = ws1.iter_rows(min_row=value,max_row=value) 

は、私はエラー「strをしなければならない、int型ではない」と私はenumerateにしようとすると、私はエラー「タプルする 『(int型だけではない)』をタプルを連結することができます」ゲット。

min_rowmax_rowが、intを必要としていると思いますが、それでも "int 'オブジェクトは反復可能ではありません。また、あなたに感謝し、値str()int()

感謝何かアドバイスを作ってみました。

+2

ヒント: '' ws.iter_rows() 'あなたはほぼ確実に必要としないとenumerate'を混在させないでください。 'zip(lst、rows)'はおそらくあなたが望むものです。 –

答えて

1

あなたはenumerateで反復可能をラップすると、次の2つの値を取得:ペアがenumerate()から放出されるインデックス

で反復可能なの

  • 列挙
  • の指標値をタプルとして。
    しかし、1つの変数名のみを識別しているので、valueにはタプル全体が含まれています。
    つまりvalue = (i, current_val_of_lst)です。

    代わりに、試してみてください。

    lst = ['1','2','a','a12'] 
    
    for i, value in enumerate(lst): 
        # i is the enumeration index 
        # value is the entry in list 
        ... 
    
+0

パーフェクト、 'min_row'と 'max_row'に 'value'を 'i'に置き換えます。 – SpaceCadet

+1

はい。しかし、あなたが望むものが 'i'であれば、' for i in range(len(lst)):... ' –

関連する問題