使用可变数量的参数执行BITWISE AND功能

时间:2017-04-21 07:21:29

标签: python python-3.x bit-manipulation

我会尽量保持这一点。我正在研究一个小程序,它有一个未知数量的参数传递给它。该函数应返回输入的所有参数的按位'和'。处理它的最佳方法是什么?到目前为止,这就是我所拥有的:

def foo(*args):
    return args_0 & args_1 & ... args_n

foo(a, b)
# return a & b
foo(a, b, c)
# return a & b & c

道歉,如果其中任何一个根本不清楚,或者是否有一些明显我遗漏的东西;我仍在努力学习如何编程。

2 个答案:

答案 0 :(得分:4)

您可以使用*args在功能中接收未知数量的参数,然后使用reduce的参数使用operator.and_找到 BITWISE AND

from operator import and_
from functools import reduce  # `reduce` is available with `functools`
                              # package since Python 3.x

def foo(*args):
    return reduce(and_, args)

注意:在旧版本的Python中,reduce可用作内置函数。

答案 1 :(得分:1)

ID | NAME | Desc1 | Desc2 | Desc3 | Desc4 | Desc5 | Desc6
A    A      Value1  Value2
B    B      Value1
C    C      Value1  Value2  Value3
D    D      Value1  Value2  Value3  Value4  Value5  Value6

transform max([Description]) select ID, [Description] from TableName Group ID Pivot [Description] 在列表中的所有对上调用from functools import reduce def bitwise_and(*args): return reduce(lambda x, y: x & y, args) 表达式(reduce),从而减少它们,直到只剩下一个结果。