2017-05-30 191 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)'只會設置一個字符串'input2'到變量input1中 –

+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.05而不是0.5,並且你有錯誤的索引,它應該是val [1] not val [2](在我的代碼: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

爲什麼要用'n'變量,當'input_lists'變量知道它的長度?如果你改變'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) 

這是不一樣你需要的結果是相同的,但它根據您在最初的代碼中使用的指標是正確的。你應該再次檢查你的計算。