在Python中对具有不同运算符的列表求和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python中对具有不同运算符的列表求和相关的知识,希望对你有一定的参考价值。

在python中,我们可以将列表总结为:sum(list_of_integers)

现在sum只是运算符+中两个元素之间的运算。

如果我想用orandxor等不同的运算符总结一个列表怎么办?

我可以使用for循环逐个手动完成,但必须有更好的方法。

答案

functools.reduce非常适合这种用例。它需要一个函数来应用累计值和下一个值,您想要减少的可迭代值,以及可选的初始值。

例如,按位或按列表中的每个值:

import functools

functools.reduce(lambda a, b: a ^ b, [1, 2, 3])

这相当于1 ^ 2 ^ 3

另一答案

functools.reduce的替代方法是编写一个明确的for循环:

def xor_reduce(args):
    result = 0
    for x in args:
        result ^= x
    return result

xor_reduce([1, 2, 3])

如果你想采用reduce方式(对于IMO来说不是那么不合理),我会使用operator模块:

from functools import reduce
from operator import xor

reduce(xor, [1, 2, 3])

operator模块(在标准库中,因此应始终可用)也将所有其他标准操作定义为函数,但对于orand,添加了尾随_,因为它们是保留关键字:

from operator import or_, and_
reduce(or_, [1, 2, 3])
reduce(and_, [1, 2, 3])

虽然对于这两个你可以使用内置函数anyall

any([1, 2, 3])
all([1, 2, 3])

以上是关于在Python中对具有不同运算符的列表求和的主要内容,如果未能解决你的问题,请参考以下文章

如何在SAS中对不同公共变量的观测值进行求和

在 oracle 中对具有空值的列求和

python列表中依次插入不同元素

如何在 SQL Server 中对具有相同 ID 的多行求和

SonataAdminBundle 如何在列表视图中对列的值求和

如何在 SwiftUI 中对列表中的值求和?