如何根据 Python 中的 2 个运算符列表在列表中添加或减去 3 个项目?
How can I add or subtract 3 items in a list based on a list of 2 operators in Python?
假设我有一个列表 number_list = [3,4,9]
而我想根据operators = ['+', '-']
等列表对列表中的数字进行操作
该程序将获取这些列表并使用该列表对数字进行操作。使用示例列表,以下等同于:
3 + 4 - 9
并且该函数将 return 这个等式的结果。
虽然我知道加号和减号运算的顺序并不重要,但我计划将其与乘法和除法一起使用,其中顺序很重要。
感谢任何能提供一些关于我将如何做到这一点的见解的人。
不关心安全性的惰性解决方案(阅读 eval 可以做的“坏事”)
number_list = [3, 4, 9, 5]
operators = ["+", "-", '*']
# create a new list that can hold the above lists
new = [None] * (len(number_list) + len(operators))
# assign the first list using slice assignment
new[::2] = number_list
# assign the second list using slice assignment
new[1::2] = operators
# make all the elements to a string and eval
res = eval(''.join(map(str, new)))
print(res)
输出
-38
假设
operators
必须具有有效的运算符,并且必须正好比 number_list
的大小小一。同样,如果您在实际生产代码中这样做,eval
不是正确的选择。
假设我有一个列表 number_list = [3,4,9]
而我想根据operators = ['+', '-']
该程序将获取这些列表并使用该列表对数字进行操作。使用示例列表,以下等同于:
3 + 4 - 9
并且该函数将 return 这个等式的结果。
虽然我知道加号和减号运算的顺序并不重要,但我计划将其与乘法和除法一起使用,其中顺序很重要。
感谢任何能提供一些关于我将如何做到这一点的见解的人。
不关心安全性的惰性解决方案(阅读 eval 可以做的“坏事”)
number_list = [3, 4, 9, 5]
operators = ["+", "-", '*']
# create a new list that can hold the above lists
new = [None] * (len(number_list) + len(operators))
# assign the first list using slice assignment
new[::2] = number_list
# assign the second list using slice assignment
new[1::2] = operators
# make all the elements to a string and eval
res = eval(''.join(map(str, new)))
print(res)
输出
-38
假设
operators
必须具有有效的运算符,并且必须正好比 number_list
的大小小一。同样,如果您在实际生产代码中这样做,eval
不是正确的选择。