Python 如何将两个布尔lambda函数组合成一个新的布尔lambda函数?

Python 如何将两个布尔lambda函数组合成一个新的布尔lambda函数?,python,python-3.x,Python,Python 3.x,我在制作“无限”时遇到了另一个问题 到目前为止,类函数接受布尔lambda函数作为对象。我必须制作一些方法,这些方法会给出并集、交集和减法 我意识到要使用这些方法,我只需调整限制布尔函数,例如: A = Infset(lambda x: x%2==0) B = Infset(lambda x: x%2==1) 但是,如果我想通过以下方式尝试或: c = A|B 它只检查第一个布尔函数,而不是第二个。我做错什么了吗?我也尝试过这种方法: D = (lambda x: x%2==0) or (l

我在制作“无限”时遇到了另一个问题

到目前为止,类函数接受布尔lambda函数作为对象。我必须制作一些方法,这些方法会给出并集、交集和减法

我意识到要使用这些方法,我只需调整限制布尔函数,例如:

A = Infset(lambda x: x%2==0)
B = Infset(lambda x: x%2==1)
但是,如果我想通过以下方式尝试

c = A|B
它只检查第一个布尔函数,而不是第二个。我做错什么了吗?我也尝试过这种方法:

D = (lambda x: x%2==0) or (lambda x: x%2==1) #which doesn't work. Probably why my code doesn't work
E = lambda x: x%2==0 or x%2==1 #which works

我该如何将此连接到我的代码?有人能指出我的错误吗?

使用另一个lambda作为结果。我想你想要这个:

类输入集:
定义初始化(self,f):
self.f=f
定义或(自身、其他):
返回信息集(lambda x:self.f(x)或other.f(x))
定义和(自身、其他):
返回信息集(lambda x:self.f(x)和other.f(x))
定义调用(self,x):
返回self.f(x)
A=Infset(λx:x%2==0)
B=输入(λx:x%2==1)
C=A | B
对于范围(10)内的i:
print(f'A({i})={A(i)!s:5}B({i})={B(i)!s:5}C({i})={C(i)!s:5}
A(0)=真B(0)=假C(0)=真
A(1)=假B(1)=真C(1)=真
A(2)=真B(2)=假C(2)=真
A(3)=假B(3)=真C(3)=真
A(4)=真B(4)=假C(4)=真
A(5)=假B(5)=真C(5)=真
A(6)=真B(6)=假C(6)=真
A(7)=假B(7)=真C(7)=真
A(8)=真B(8)=假C(8)=真
A(9)=假B(9)=真C(9)=真

如果您的
f
是未调用的函数,则在条件中它们总是被评估为
True
。这意味着
self.f或other.f
other.f
。我如何制作一个能够接受这两个函数的限制的函数?
D = (lambda x: x%2==0) or (lambda x: x%2==1) #which doesn't work. Probably why my code doesn't work
E = lambda x: x%2==0 or x%2==1 #which works