我有两个列表:
numbers =[2.4, 3.5, 0.5]
operations = ['+', '-']
请注意,操作中的值将更改,因此我不能只键入:
solution = numbers[0] + numbers[1]
我需要在这些数字之间插入operations[0]
的值。
我尝试过:
solution = numbers[0] + operations[0] + numbers[1]
但是我不能合并浮点数和字符串值。
答案 0 :(得分:2)
Python中的每个运算符都是available through the operator
模块。这样,您可以根据需要动态使用运算符。
您可以将函数本身包含在列表中,然后调用它:
import operator
numbers = [2.4, 3.5, 0.5]
operations = [operator.add, operator.sub]
print(operations[0](numbers[0], numbers[1]))
# ^-- identical to operators.add(numbers[0], numbers[1])
答案 1 :(得分:0)
您可以使用lambda
表达式来表示运算符:
numbers =[2.4, 3.5, 0.5]
operations = [lambda x,y: x + y, lambda x,y: x - y]
solution = operations[0](numbers[0], numbers[1])
请注意,只有当您实际调用函数时,这才会不预先计算值。
答案 2 :(得分:-1)
您可以使用eval(string)
,它将给定的字符串参数作为一段代码运行:
numbers =[2.4, 3.5, 0.5]
operations = ['+', '-']
# it is supposed that len(operations)+1 == len(numbers)
s = ''
for i in range(len(operations)):
s += str(numbers[i]) + operations[i]
s += str(numbers[i+1]) # s='2.4+3.5-0.5'
print(eval(s))