[issue40531] Adding the method find() to list

João Marcos report at bugs.python.org
Wed May 6 09:49:00 EDT 2020


New submission from João Marcos <jmpb190900 at gmail.com>:

"""
PROBLEM:

When trying to search the position of an element inside a list, we should use the `in` operator to first check if the element exists, and then use the `index` method to obtain the index.

`in` (__contains__) runs a linear search to return the boolean.
`index`        also runs a linear search to return the index.

This makes the code slower, because we need to search for the same item twice.


FEATURE PROPOSAL:

Similar to str.find(), list.find() should be implemented, where -1 is returned when the element isn't present
"""


# Since there's no list.find(), this is my workaround to achieve making only one linear search per query
def find(container: list, index: int) -> int:
    """ Str.find() behavior but for lists """
    try:
        return container.index(index)
    except ValueError:
        return -1

# Example driver code:
index = find(list, possible_element)
if index_of_element == -1:
    pass # Not found
else:
    pass # Found

----------
messages: 368254
nosy: João Marcos
priority: normal
severity: normal
status: open
title: Adding the method find() to list
type: enhancement
versions: Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue40531>
_______________________________________


More information about the Python-bugs-list mailing list