【问题标题】:Can I loop through logical operators in python?我可以遍历python中的逻辑运算符吗?
【发布时间】:2021-01-24 22:30:35
【问题描述】:

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

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

我试过import operatoritertools,但它们不包含逻辑运算符,只有数学和其他一些运算符。

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

【问题讨论】:

    标签: python python-3.x logical-operators


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      orand 不能真正被函数复制,因为它们短路了;但如果你不关心,你可以编写 lambda 函数,例如lamba x, y: x and y。对于布尔值的异或,您可以使用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 在 cmets 中提出的。

      更新:使用stfwn's answer。这样更好。

      【讨论】:

      • 而不是 for 循环,只需说:l = [op(a,b) for op in ops]
      猜你喜欢
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2016-05-11
      • 2013-08-14
      相关资源
      最近更新 更多