python - 循环地将操作数列表缩减为单个结果
问题描述
(这是另一个问题的重新整理、自我回答的版本,由于没有很好地提出,该问题已被关闭。)
我有一个整数列表:
numbers = [1, 2, 3, 4, 5, 6]
我的目标是在这些数字上交替应用和和乘法运算符以获得单个结果。
例如,对于这个输入,结果是
((1 + 2) * 3 + 4) * 5 + 6
减少到 71。本质上,这可以分解为:
t1 = 1 + 2
t2 = t1 * 3
t3 = t2 + 4
...
等等。
奖励:可以推广到两个以上周期性操作的解决方案将受到欢迎。
解决方案
这是一个略有不同的答案,避免next
在 lambda 函数中使用。
import operator
from itertools import cycle
def apply_cyclic(numbers, functions):
numbers = iter(numbers)
functions = cycle(functions)
result = next(numbers)
for num, fun in zip(numbers, functions):
result = fun(result, num)
result num
print(apply_cyclic([1,2,3,4,5,6], [operator.add, operator.mul]))
推荐阅读
- android - custom_marker_icon >=0.2.0,版本解析失败
- android - 有没有办法知道哪个应用在 Android 上打开了移动数据?
- flutter - 如何扩展文本按钮?
- python - 在 Django 中加载静态文件时出错
- reactjs - 为什么我的类方法可以在 React 中工作而没有显式地将它绑定到“this”?
- node.js - 字典无法在赛普拉斯中排序
- javascript - 如何在不删除先前值的情况下将值存储在数组中
- go - 在 POST 请求中格式化正文
- css - Safari 中的模糊与 3d CSS 转换和缩放
- php - 如何从地址标签中获取特定的用户代码