2017-05-30 5 views
-1

整数を含む2つのリストを持つ計算を実行する必要があります。私は同じのためのforループを使用しています。私は計算中にリストを変更する手がかりがない。私は以下のコードを試しました。ある人がより良いアプローチで私を助けてくれますか?リストを関数に渡す

def calculation(input1,input2): 
    for i in range(2): 
    val = input1 

    cal1 = val[0] + 5 
    cal2 = val[2] + 0.05 
    print cal1,cal2 

    i = i+1 
    #now trying to assign 'input2' to 'val' 
    input1 = "input"+str(i) 




input1 = [10,20,30,40] 
input2 = [1,2,3,4] 
calculation(input1,input2) 

my output results should look like 
>> 15,20.5 
>>6,2.5 
+0

'input1 =" input "+ str(i)'は変数input1に文字列 'input2'を設定します。 –

+0

はい、わかります。文字列をリストに変換するにはどうすればよいですか? – Abdul

+0

あなたは 'input2'変数を使用しないので、なぜそれを持っていますか? –

答えて

2

あなたは、必要以上に難しいことをしています。

def calculation(input1,input2): 
    for val in (input1, input2): 
     cal1 = val[0] + 5 
     cal2 = val[2] + 0.05 
     print cal1,cal2 

あるいは、さらに簡単:ただ、入力のリストに対して繰り返しリストのリストに

def calculation(*inputs): 
    for val in inputs: 
     ... 
+0

素晴らしいです。おかげで多くの – Abdul

1

パスをして、そのリスト上のforループを実行します。

def calculation(ls): 
    for list in ls: 
     #your code here, list is input 1 and then input 2 

また、0.5の代わりに0.05を追加し、間違ったインデックスを持つと、val [2]ではないval [1]である必要があります(私のコードでは:list [1])

+0

は、多くのお返事に感謝します。 – Abdul

+0

お手伝いします。 – IsaacDj

0

ここにありますpython2とpython3で動作するソリューション:

def calculation(input_lists, n): 
    for i in range(n): 
     val = input_lists[i] 
     cal1 = val[0] + 5 
     cal2 = val[2] + 0.05 
     print (cal1,cal2) 

input1 = [10,20,30,40] 
input2 = [1,2,3,4] 
calculation([input1,input2], 2) 
+0

'input_lists'変数が長さを知っているとき、なぜ' n'変数を気にするのでしょうか? 'input_lists'の長さを変更しても' n'ではなく、エラーの可能性があります。これはとても好きですが、少なくともそれは正当化されています。 –

0

これは、任意の数の入力(ゼロを含むかもしれませんが、望ましくないかもしれません)の場合に機能します。この場合の*演算子は、すべての引数をリストに集めます。リストは繰り返し処理され、各メンバーで計算が実行されます。

def calculation(*inputs): 
    for val in inputs: 

     cal1 = val[0] + 5 
     cal2 = val[2] + 0.05 
     yield cal1, cal2 


input1 = [10,20,30,40] 
input2 = [1,2,3,4] 

for c in calculation(input1,input2): 
    print(c) 

また、各繰り返しで回答を返すように関数を変更したので、呼び出し元はその処理方法を決定できます。この場合は単に印刷するだけですが、それをさらに計算に使用することができます。

結果は、あなたの必要な結果は同じではありません

(15, 30.05) 
(6, 3.05) 

ですが、それはあなたがあなたの元のコード内で使用指標に基づいて正しいです。計算をもう一度チェックする必要があります。

関連する問題