python - 如何在没有 for 循环的情况下在 python 列表/数组上迭代地执行操作?
问题描述
是否可以对列表的前两个元素执行以下操作,存储结果,然后对列表中的所有项目的前一个结果和列表中的下一个项目执行下一个操作,而无需 for 循环?这里 F(x) 是一个任意定义的函数。这是带有 for 循环的工作代码:
list = [a,b,c,d,e,f,g,h]
result = F(a,b)
for i in range(2,len(list)):
result = F(result,list[i])
print(result)
非常感谢您,最好的答案是煎饼。
解决方案
是的,这是减少:
from functools import reduce
result = reduce(F, list)
reduce
result
将函数与列表的每个元素一起应用于累加器 ( )。但是,在第一次迭代中,如果您没有指定初始累加器,它将使用初始元素作为累加器。
推荐阅读
- javascript - TypeError: undefined is not a constructor (evalating 'casper.done()') 错误
- javascript - 动态创建组件和模型时输入字段无法更改模型
- django - 在 scrapyd.schedule 中找不到蜘蛛
- angular - Angular 中带有 Webpack 代码拆分的异步组件
- .net - 完整的 .NET Framework 上的 ASP.NET Core 2.1
- php - 根据组合框查询新数据,并在新文本框中显示
- ruby-on-rails - Rails form_with 错误(远程:真)
- reactjs - 将具有内部状态的对象作为 React 组件中的实例属性是一种不好的做法吗?
- node.js - 如何使用添加到数据库的新主题列表重新加载/重新初始化 Kafka Consumer
- javascript - 如何从未知列数的 ajax 渲染表