Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用_包含_方法_Python_Python 3.x - Fatal编程技术网

在Python中使用_包含_方法

在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')等表达

我正在使用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(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模块构建一些解析器。如果您的组合源是一些文本输入。然而,这完全超出了原始问题的范围。你需要问另一个问题,最好有足够的细节来说明你到底想要实现什么。然而,请注意,通常情况下,只有在对主题本身有了一些基本的了解之后,您才会提出这个问题。