Python中-1的优雅检查
是否有一种优雅的方法来检查Python中-1的优雅检查,python,string,Python,String,是否有一种优雅的方法来检查str.find()instance方法返回的值-1?我发现测试-1的值非常难看,但我也不想说
str.find()
instance方法返回的值-1?我发现测试-1的值非常难看,但我也不想说<0,因为这可能会引起混淆
if (myString.find('foo') == -1):
print("foo not found in ", myString)
如果不需要索引,请不要使用str.find()
。使用中的来测试子字符串;或者在这种情况下,不在
中以否定测试:
if 'foo' not in myString:
print("foo not found in", myString)
作为参考,在您确实需要索引的情况下,可以使用另一个字符串实例方法来查找它:
str.index
和str.find
之间的区别在于,如果未找到子字符串,则str.index
将rise ValueError
,这可能更适合您的用例(例如,如果您预期子字符串通常会出现):
我想知道是=-1
还是<0
在处理器级别得到了更好的优化。如果处理器是智能的,那么<0
只需要检查一位,这非常快。不过,我的计算机体系结构课程已经很久没有上了。@TheSoundDefense:这是Python,不是C-1
和0
是对象,在CPython的情况下,这些对象恰好是内部对象(所有介于-1和255之间的小整数都是内部对象),Python所要做的就是在使用==
@MartijnPieters时测试指针是否相等,我没有考虑到这一点。我所有的C语言学习都是为了帮助我使用Python。我需要重新训练我的大脑。谢谢,我不知怎的不知道“in”的存在!
try:
index = myString.index("foo")
except ValueError:
print("'foo' not found in '{0}'.".format(myString))
else:
# 'foo' was found, 'index' has been assigned