是否有一種優雅的方法來檢查實例方法str.find()
返回的值-1?我發現測試值爲-1非常難看,但我不想說< 0,因爲這可能會導致混淆。在Python中對-1進行優雅檢查
if (myString.find('foo') == -1):
print("foo not found in ", myString)
是否有一種優雅的方法來檢查實例方法str.find()
返回的值-1?我發現測試值爲-1非常難看,但我不想說< 0,因爲這可能會導致混淆。在Python中對-1進行優雅檢查
if (myString.find('foo') == -1):
print("foo not found in ", myString)
不要使用str.find()
如果你不需要索引。使用in
來測試子字符串;或者在這種情況下not in
否定測試:
if 'foo' not in myString:
print("foo not found in", myString)
謝謝,我不知道'在'存在! – TheMathemagician
作爲參考,在你需要的指數的情況下,有一個發現它另一個字符串實例方法:str.index
。
str.index
和str.find
之間的區別是,str.index
將raise ValueError
如果沒有找到子串,(如果您預計子一般存在EG)這可能是更適合你的使用情況:
try:
index = myString.index("foo")
except ValueError:
print("'foo' not found in '{0}'.".format(myString))
else:
# 'foo' was found, 'index' has been assigned
我想知道是否在處理器級別更好地優化'== -1'或'<0'。如果處理器很聰明,那麼'<0'只需要檢查一個位,這非常快。雖然我的計算機體系結構課程已經過了很長時間。 – TheSoundDefense
@TheSoundDefense:這是Python,而不是C; '-1'和'0'是對象,在CPython的情況下,它恰好是被攔截的(所有的小整數都在-1和255之間),所有Python必須做的就是在使用'=='時測試指針是否相等。 。 –
@MartijnPieters我沒有考慮過。我所有的C學習都回來咬我與Python的工作。我需要重新訓練我的大腦。 – TheSoundDefense