python:if行[1].upper().find(brand)=-1:
这两种说法相等吗python:if行[1].upper().find(brand)=-1:,python,Python,这两种说法相等吗 if row[1].upper().find(brand)!=-1: 及 不,他们不平等。在Python中,任何非零数字都被视为True,因此,如果表达式的计算结果为-1,则第二条语句将被视为True,如果表达式的计算结果为0(当它应该为True时),则第二条语句将被视为false 使用第一句话。否 只有当find()返回-1时,第一个值才会计算为false 只有当find()返回0时,第二个值才会计算为false 这甚至会给您错误的结果,因为0意味着子字符串位于字符串的开头
if row[1].upper().find(brand)!=-1:
及
不,他们不平等。在Python中,任何非零数字都被视为True,因此,如果表达式的计算结果为-1,则第二条语句将被视为True,如果表达式的计算结果为0(当它应该为True时),则第二条语句将被视为false 使用第一句话。否 只有当
find()
返回-1
时,第一个值才会计算为false
只有当find()
返回0
时,第二个值才会计算为false
这甚至会给您错误的结果,因为
0
意味着子字符串位于字符串的开头。因此,如果子字符串位于开头,则该语句的计算结果为false
,如果未找到该子字符串,则该语句的计算结果为true
。否,当然不是
第一个检查结果是否为
-1
,另一个检查结果是否为Python认为“false”的任何内容<代码>-1不被Python视为false。要解释find()
方法的作用:
>>> "hello".find("l")
2
>>> "hello".find("he")
0
>>> "hello".find("x")
-1
-1
是“未找到搜索字符串”的“神奇值”。将此与索引()进行对比:
“你好”。索引(“l”)
2.
>>>“你好”,索引(“他”)
0
>>>“你好”,索引(“x”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:未找到子字符串
就我个人而言,我更喜欢index()
,因为在Python中,通常不赞成使用神奇的值,而异常处理是一种类似Python的方式——“EAFP”(请求原谅比请求许可更容易)
在您的例子中,它看起来像“LBYL”编程风格(三思而后行),尽管您没有显示太多上下文,所以我不知道
if
语句决定了什么 正如其他人所说,不,这些说法并不等同。但是,当您只需要查找子字符串是否存在且不在何处时,我更喜欢使用中的,而不是.find()
,例如:
if brand in row[1].upper():
这相当于第一句话,但更简洁易读。最上面的答案是正确的。但我发现在
中阅读比使用数字结果更容易。即
>>> row
[[1, 'lysol']]
>>> brand
'Lysol'
>>> brand.upper() in row[0][1].upper()
True
>>>
不过,一旦“Schlysol”品牌出现,所有的赌注都将落空。嗯
if brand in row[1].upper():
>>> row
[[1, 'lysol']]
>>> brand
'Lysol'
>>> brand.upper() in row[0][1].upper()
True
>>>