我需要执行一个包含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 :(得分: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)
这与您的要求结果不同,但根据您在原始代码中使用的索引,它是正确的。你应该再次检查你的计算。