python 3 : apply an operator over an iterable

标签 python python-3.x operators iterable

sum(iterable) 实际上是:

def sum(iterable):
    s = 0
    for x in iterable:
        s = s.__add__(x)
    return s

Python 是否有内置函数可以在不设置初始值的情况下完成此操作?

# add is interchangeable with sub, mul, etc.
def chain_add(iterable):
    iterator = iter(iterable)
    s = next(iterator)
    while True:
        try:
            s = s.__add__(next(iterator))
        except StopIteration:
            return s

sum 的问题是它不适用于支持 + 运算符的其他类型,例如计数器

最佳答案

尝试查看 python reduce() function : 你传入一个函数、一个可迭代对象和一个可选的初始化器,它会将函数累积应用于所有值。

例如:

import functools
def f(x,y):
    return x+y

print functools.reduce(f, [1, 2, 3, 4]) # prints 10
print functools.reduce(f, [1, 2, 3, 4], 10) # prints 20, because it initializes at 10, not 0.

您可以根据您的可迭代对象更改函数,因此它非常可定制。

关于 python 3 : apply an operator over an iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961950/

相关文章:

c++ - 奇怪的运算符 "|="

python - 具有edgeNgram过滤器的自定义分析器不起作用

python - 使用正则表达式从原始字符串中提取月份名称和日期数字(编辑 : new test cases from 7)

python - 解析页面的所有输入标签

python - 这是创建 numpy 数组的只读 View 的正确方法吗?

python - 为什么python有前自增操作符而没有后自增操作符?

python - 快速 Python IPv6 压缩

python - 如何在此代码:上实现session.add

Haskell 函数组合 (.) 与函数应用 ($)

java - 大于和小于一个语句