Python中使用不同运算符求和列表

2024-03-28 11:03:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,我们可以将一个列表求和为:sum(list_of_integers)。在

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

如果我想用不同的运算符对一个列表求和,比如orandxor等等?在

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


Tags: orandof方法integers元素列表for
2条回答

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模块:

^{pr2}$

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

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

尽管对于这两个,您可以使用内置函数any和{}:

^{4}$

functools.reduce非常适合这个用例。它需要一个函数来应用于累积值和下一个值、要减少的iterable和可选的初始化器。在

例如,对列表中的每个值进行位或运算:

import functools

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

这相当于1 ^ 2 ^ 3。在

相关问题 更多 >