python numexp模块中有';和';操作人员

python numexp模块中有';和';操作人员,python,numexpr,Python,Numexpr,我正在使用python的模块。 我正在尝试运行下一个代码段: import numexpr as ne def main(): result = ne.evaluate('where((1 > 9) & (where(1 > 9, 9, 1) == 0), 2, 3)') print(f'Result: {result}') if __name__ == "__main__": main() 但是numexpr抛出以下错误: TypeErr

我正在使用python的模块。 我正在尝试运行下一个代码段:

import numexpr as ne


def main():
    result = ne.evaluate('where((1 > 9) & (where(1 > 9, 9, 1) == 0), 2, 3)')
    print(f'Result: {result}')


if __name__ == "__main__":
    main()

但是
numexpr
抛出以下错误:

TypeError: unsupported operand type(s) for &: 'bool' and 'ConstantNode'
但是,如果我在一个单独的表达式中提取冲突的部分,它就会工作

def main():
    intermediate_result = ne.evaluate('where(1 > 9, 9, 1) == 0')
    result = ne.evaluate(f'where((1 > 9) & {intermediate_result}, 2, 3)')
    print(f'Result: {result}')
但是想法是要有一个单一的表达。 有人知道我如何重写这个公式使它工作吗


提前感谢。

&
是按位
运算符。为什么不直接使用

您希望&成为逻辑and吗?我假设您需要,在这种情况下,您可能只需要一个双和(&&&),否则您要做的是按位AND运算,这是一个算术运算,“True”在python中不是数字。@TomLubenow:“True”在python中不是数字是什么意思
True
bool
int
的子类,
int
是数字类型->
True
是number@TomLubenow
True
是一个关键字,意思是
1
你们看起来是对的(你们每天都学到新东西)但是我仍然认为做布尔运算是一个坏主意。谢谢TomLubenow,<代码>和<代码>操作符。抱歉,文档中没有提到那个操作员。谢谢@alec_a,
操作员工作正常。抱歉,文档中没有提到那个操作员。没问题。如果我的回答有帮助,你介意接受吗?它会给你一个小小的提升。