Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How efficient/fast is Python's 'in'? (Time Complexity wise)

In Python, what is the efficiency of the in keyword, such as in:

a = [1, 2, 3] if 4 in a:   ... 
like image 348
John Avatar asked Oct 15 '12 23:10

John


People also ask

What is Python time complexity?

Time complexity is commonly estimated by counting the number of elementary operations performed by the algorithm, supposing that each elementary operation takes a fixed amount of time to perform. When analyzing the time complexity of an algorithm we may find three cases: best-case, average-case and worst-case.

Which language is best for time complexity?

C++ is the best language for not only competitive but also using to solve the algorithm and data structure problems . C++ use increases the computational level of thinking in memory , time complexity and data flow level.


2 Answers

The complexity for lists is:

O(n) 

For sets it is:

O(1) 

http://wiki.python.org/moin/TimeComplexity

like image 200
Eduardo Avatar answered Oct 09 '22 02:10

Eduardo


It depends on the right hand operand:

The operators in and not in test for collection membership. [...] The collection membership test has traditionally been bound to sequences; an object is a member of a collection if the collection is a sequence and contains an element equal to that object. However, it make sense for many other object types to support membership tests without being a sequence. In particular, dictionaries (for keys) and sets support membership testing.

Classes can implement the special method __contains__ to override the default behavior (iterating over the sequence) and thus can provide a more (or less) efficient way to test membership than comparing every element of the container.

The membership test operators (in and not in) are normally implemented as an iteration through a sequence. However, container objects can supply the following special method with a more efficient implementation, which also does not require the object be a sequence.


Since you have a list in your example, it is iterated over and each element is compared until a match is found or the list is exhausted. The time complexity is usually O(n).

like image 21
Felix Kling Avatar answered Oct 09 '22 02:10

Felix Kling