Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

difference between find and index

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!!

like image 334
SohamC Avatar asked Mar 05 '14 06:03

SohamC


People also ask

Is find the same as index in Python?

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.

What is the difference between find and index function explain with the proper example?

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.

What does find () mean in Python?

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. (

What is the difference between find and search in Python?

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.


2 Answers

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.

like image 88
falsetru Avatar answered Oct 13 '22 20:10

falsetru


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 
like image 35
Reep Avatar answered Oct 13 '22 20:10

Reep