在Python中使用_包含_方法
我正在使用python中的________;方法,如下所示: 案例1:正确在Python中使用_包含_方法,python,python-3.x,Python,Python 3.x,我正在使用python中的________;方法,如下所示: 案例1:正确 if ('A','B','D').__contains__('A'or'E'): print(True) else: print(False) 案例2:错误 if ('A','B','D').__contains__('E'or'B'): print(True) else: print(False) 如果我将或替换为和,这是有效的,并且使用(('E'和'A')和('B'和'C')等表达
if ('A','B','D').__contains__('A'or'E'):
print(True)
else:
print(False)
案例2:错误
if ('A','B','D').__contains__('E'or'B'):
print(True)
else:
print(False)
如果我将或替换为和,这是有效的,并且使用(('E'和'A')和('B'和'C')等表达式也有效
请您确认一下为什么或不能以标准方式工作,就像我在if(B或C)条件下工作一样?还有其他方法可以使用正则表达式或lamda表达式执行上述操作吗?首先,不要像那样使用
\uuuuuuuuu包含
。像这样在中使用
如果('A','B','C')中的('A'或'E'):
通过
希望这将开始显示您的问题所在。a或b
在调用\uuuuu contains\uuuu
之前进行评估,并且仅测试其中一个值是否包含在内
语句('A'或'E')
将简化为'A'
。这就是为什么您的第一个案例正在打印True
如果('A','B','C')中的('E'或'B'):
通过
对于第二个案例,('E'或'B')
将计算为'E'
,而这不在('A','B','C')
中,因此第二个案例打印为False
附录
要更正此代码,您应该考虑得更详细一点
值=('A','B','C')
如果值中的“A”或值中的“E”:
通过
如果值中的“E”或值中的“B”:
通过
您正在错误地使用和以及或
表达式x和y首先计算x;如果x为false,则返回其值;否则,将计算y并返回结果值。//
此外,双下划线函数用双下划线标记,尤其是作为人们通常不应该使用的标记
(写上述内容的一种)正确方法是:
my_tuple=('A','B','D')
if 'A' in my_tuple or 'E' in my_tuple:
print(True)
else:
print(False)
或
以标准方式工作。你看到“E”或“B”的计算结果了吗?就这点而言,'E'和'B'
?有调试吗?另外,您为什么直接使用\uuuuuuuuuuuuuuuu
?你不应该这样做你说“像这样使用”,但仍然显示出错误的使用方法。只显示错误的方法来执行测试,而没有正确的方法,这会让那些没有仔细阅读的人感到困惑。我编写的代码实际上并没有改变您的逻辑(确实需要更改)。我只讨论了代码块中的语法错误。@ShadowRanger所说的是,我的答案令人困惑,因为我没有显示正确的逻辑,我只围绕代码块来讨论它。还要注意,如果要测试的东西很大(因此在我的元组中反复键入或…X是一件痛苦的事),你可以用any
来概括许多项目的情况,例如,在这种情况下,你可以做如果有的话(我的元组中的x表示x在('A','B')):
;添加要检查的新项只意味着扩展正在迭代的元组。或者,如果类型是可散列的,set
操作可能会有所帮助,例如,如果不是{'A','e'}.isdisjoint(我的元组):
,特别是如果一方或另一方可以预先转换为set
,并在许多测试中重复使用。感谢您的回复。如果有(A或E)和B这样的表达式呢?我不能用任何。。表达式可以更改,因此没有一致的模式。@user5711693如果必须允许任意组合,则可能需要使用例如pyparsing模块构建一些解析器。如果您的组合源是一些文本输入。然而,这完全超出了原始问题的范围。你需要问另一个问题,最好有足够的细节来说明你到底想要实现什么。然而,请注意,通常情况下,只有在对主题本身有了一些基本的了解之后,您才会提出这个问题。