tup中的多个或多个条件

2024-05-04 08:29:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想实现这个目标:

if ('a' or 'b' or 'c' or 'd') in ['1' , '@' , 'L' , 'b' , '+']:
    print("Valid")

因为列表中存在“b”,所以输出应该是“有效”的,但是没有输出。搜索了这么长时间后,我发现不能使用多个'or's。还有别的办法吗? 请注意,如果改为:

if ('a' or 'b') in ['1' , '@' , 'L' , 'b' , '+']:
    print("Valid")

输出是“有效的”,但我想在元组中有多个元素


Tags: orin元素目标列表if元组print
2条回答

Python any()

The any() method returns True if any element of an iterable is True. If not, any() returns False.

如果要检查至少一个匹配项:

if any(x in ['1', '@', 'L', 'b', '+'] for x in ('a','b','c','d')):
    print("Valid")

注:

对字符串使用布尔运算符的逻辑是错误的。你知道吗

字符串之间的布尔运算的输出取决于以下内容:

  1. Python认为空字符串的布尔值为“false” 以及布尔值为“true”的非空字符串。你知道吗
  2. 对于“and”运算符,如果left值为true,则right值为 检查并返回。如果left值为false,则返回该值
  3. 对于'or'运算符,如果left值为真,则返回, 否则,如果left值为false,则返回right值。你知道吗

什么意思是('a' or 'b' or 'c' or 'd')的结果将是'a'

然后你有:if 'a' in ['1', '@', 'L', 'b', '+']:

你可以用套来做这个

>>> if set(['1', '@', 'L', 'b', '+']).intersection(set(['a', 'b', 'c', 'd'])):
...     print('valid')
... 
valid

相关问题 更多 >