2017-10-24 4 views
-6

私の現在のコードでは、それは非常に大きなファイルに基づいて、任意の年に支払った税の合計を計算し、このどのようにポップすることなく、大きなリストから要素を返すために()

def taxcalculation(year, file): 
    annuallist=[] 
    list2=[] 
    line=file.readline() 
    for line in file: 
     list1=line.split(";") 
     if list1.pop(1)[0:4]==year:##This part searches the list for specific year 
      annuallist.append(list1.pop(32))##This part searches the list for specific value used in tax() function 
      annuallist=[int(x) for x in annuallist] 
      list2.append(tax(annuallist.pop(0)))     
    sum1=round(sum(list2)) 
    return sum1 

のように見えます。 これはコードで初めて使用されたときには完全に動作しますが、その後はいつでも0を返します。私が思いついたオプションはpop(n)を[n]に置き換えるだけですが、任意の値を返すことなく無期限にコード化します。
使用:

def verokertyma():    
    print("2010",taxcalculation("2010", file),"euros.") 
    print("2011",taxcalculation("2011", file),"euros.") 

予想される出力:
2010 30481841ユーロを。
2011 32391599ユーロ。
実際の出力:
2010 30481841ユーロ。
2011 0ユーロ。

入力ファイルが、このような行の数千から成り; 2010-03-03 ;; 01; CSDAE;
M1 L; 20100303; 6 ;; AA ;; 5; 1595; 2040; 2040; 4850クライスラー; 4Dセブリングセダン2.7オートマチック - CSDAE/277 ;;セブリング; 05; e11 * 01/116 * 0143 * 03; 01; 202; 236; 45713; 1840; 1500; 01; 2730; 137; ; 205; 1C3ACF6R08; 1357405

+1

'ポップ(n)は' * N ' 'で*要素を削除することをご承知のは、次のとおりです。単に最後の要素が戻ってきたために、あなたはこれを使用することができますそれを返しますか? – jadsq

+0

あなたの入力と期待される出力がどのように見えるかを試してみてください。多くの質問に答えられずに時間を過ごすと、コミュニティに役立ちます。 -1〜まで –

+0

もっと良い....あなたの入力ファイルからもサンプル行を表示するようになりました。 –

答えて

1

pop()メソッドはリストの最後の要素を返しますはそれを削除します。

list[len(list) - 1]

または

list[-1]

+0

しかし、最後の要素を返そうとはしていませんが、状況に応じて1番目、2番目、および32番目です。そして[n]のルートはPythonが関数を永遠に解決しようとする – Aapoanaali

関連する問題