我可以在python中遍历逻辑运算符吗?

问题描述

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

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

我尝试了import operatoritertools,但它们不包含逻辑运算符,仅包括数学运算符和其他一些运算符。

我找不到以前有用的答案!

解决方法

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

from operator import and_,or_,xor

ops = [and_,xor]
l = [op(a,b) for op in ops]

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

,

orand不能真正被函数复制,因为它们会短路。但是如果您不在乎,可以编写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。更好。