I am new to python and cannot quite understand the difference between find and index.
>>> line 'hi, this is ABC oh my god!!' >>> line.find("o") 16 >>> line.index("o") 16
They always return the same result. Thanks!!
index() Return ValueThe index() method is similar to the find() method for strings. The only difference is that find() method returns -1 if the substring is not found, whereas index() throws an exception.
Difference between find() and index() in PythonIf a substring is not found in a string find() returns -1 whereas index() raises ValueError exception. As a result, find() can be used in conditional statements(if,if-else,if-elif) which run statement block on the basis of the presence of a substring in a string.
The find() method finds the first occurrence of the specified value. The find() method returns -1 if the value is not found. The find() method is almost the same as the index() method, the only difference is that the index() method raises an exception if the value is not found. (
Finding is the completion of searching. If you might not succeed in finding something, call the feature "Search". For example text search in an editor can fail due to no matches - then calling it "Find" would be lying.
str.find
returns -1
when it does not find the substring.
>>> line = 'hi, this is ABC oh my god!!' >>> line.find('?') -1
While str.index
raises ValueError
:
>>> line.index('?') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
Both the functions behave the same way if a sub-string is found.
Also find is only available for strings where as index is available for lists, tuples and strings
>>> somelist ['Ok', "let's", 'try', 'this', 'out'] >>> type(somelist) <class 'list'> >>> somelist.index("try") 2 >>> somelist.find("try") Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'list' object has no attribute 'find' >>> sometuple ('Ok', "let's", 'try', 'this', 'out') >>> type(sometuple) <class 'tuple'> >>> sometuple.index("try") 2 >>> sometuple.find("try") Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'tuple' object has no attribute 'find' >>> somelist2 "Ok let's try this" >>> type(somelist2) <class 'str'> >>> somelist2.index("try") 9 >>> somelist2.find("try") 9 >>> somelist2.find("t") 5 >>> somelist2.index("t") 5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With