代码之家  ›  专栏  ›  技术社区  ›  B Furtado

我可以在python中循环逻辑运算符吗?

  •  1
  • B Furtado  · 技术社区  · 4 年前

    为了避免重复,我想做这样的事情:

    a, b = True, False
    l = list()
    for op in [and, or, xor]:
        l.append(a op b)
    

    我试过了 import operator 而且 itertools ,但它们不包含逻辑运算符,只包含数学和其他一些运算符。

    我之前找不到任何有帮助的答案!

    1 回复  |  直到 4 年前
        1
  •  5
  •   stfwn    4 年前

    您的示例可以使用 operator 模块。

    from operator import and_, or_, xor
    
    ops = [and_, or_, xor]
    l = [op(a,b) for op in ops]
    

    这些是位运算符,但对于布尔值(仅用一位表示),它们兼作逻辑运算符。

        2
  •  2
  •   khelwood    4 年前

    or and 函数不能真正复制,因为它们短路了;但如果你不在乎,你可以编写lambda函数,例如。 lamba x, y: x and y .对于布尔值上的xor,你可以使用 operator.ne .

    ops = [(lambda x,y: x and y), (lambda x,y: x or y), operator.ne]
    l = [op(a,b) for op in ops]
    

    Adrian W在评论中提出了列表理解。

    更新:使用 stfwn's answer 好多了。