将列表传递给函数

时间:2017-05-30 08:33:01

标签: python loops

我需要执行一个包含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

4 个答案:

答案 0 :(得分: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:
        ...

答案 1 :(得分: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]而不是val [2](在我的代码中:list [1])

答案 2 :(得分: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)

答案 3 :(得分: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)

这与您的要求结果不同,但根据您在原始代码中使用的索引,它是正确的。你应该再次检查你的计算。