我正在检查另一个字符串中是否包含两个子字符串:
if (substr1 and substr2) in str:
my_func()
这不起作用,只有一个子字符串是字符串的一部分时才输入if语句。有人可以解释原因吗?
我找到了以下解决方法,我只是想知道为什么Python会这样做。
substr_list = [substr1, substr2]
if all(substr in str for substr in substr_list):
my_func()
答案 0 :(得分:0)
它不起作用,因为(substr1 and substr2)
返回substr2
或操作数可以转换为False,然后验证if substr2 in str
'' and 'Some string' # ''
'some value' and 'some value 2' # 'some value 2'
# full example
string_variable = 'some value' and 'some value 2' # You get 'some value 2'
string_variable in substr2
答案 1 :(得分:-2)
因此,and
可以检查两个布尔值(True/False
值)是否为True
,但(substr1 and substr2)
不是布尔值。但是,substr1 in str
和substr2 in str
以及两个布尔值,因此您可以创建一个声明:
if substr1 in str and substr2 in str:
myfunc()
现在在
substr_list = [substr1, substr2]
if all(substr in str for substr in substr_list):
my_func()
语句(substr in str for substr in substr_list)
创建一个返回两个布尔值的生成器。 all
所做的是获取任何可迭代的布尔生成器列表,并返回单个布尔检查它们是否都是True
。