Show
In programming, it is very common that we need to get the first item from a list that matches some criteria. Let's look at our options in Python and if we can do it without a for loop. Say we have defined class Fruit:
And we have a list of fruits like this:
We want to get the first fruit from the list with a yellow colour. Using a for loopPermalinkThe simplest way to do this is to iterate through the items in the list, check the colour, and if it's yellow, return the item.
This code is very efficient as we terminate the loop (and the function) on the the first match, so we don't do any unnecessary work. If there is no yellow fruit loop, we return Can we do this without a loop?PermalinkWe can avoid the loop by using list comprehension.
While this also works, have we gained anything? The code is not shorter. It is not clearer. And, it's also less efficient because: - it will go through the whole list (not only until it finds the first match) - create a new list of matching items - do if and only then return Loop was better. Can we do this without the loop with the same efficiency? Generator expression and the next() functionPermalinkWe could use a generator expression to avoid iterating through the whole list. The generator doesn't create a new list. It outputs values on the fly when we need them. We can rewrite our function with a generator expression like this.
First, we created a generator with generator expression and assigned it to variable matches. Then, we used the built-in function The second parameter to the This code is very efficient because it doesn't iterate the whole list or allocate any memory for a new list. It's also clear what's going on to any experienced Python developer. We can also make it one line if you're into one-liners.
SummaryPermalinkThere are multiple ways to get the first matching item from a list (or any iterable). There is nothing wrong with a for loop here. We're not mutating any variables, and it's very efficient. As we can see, replacing the for loop with a comprehension doesn't help us at all, so I don't recommend that (unless we use the filtered list for some further processing). We can avoid the for loop and keep clarity and efficiency by using generator expression. This code will be shorter and might be preferred by more experienced Python developers but will be a bit harder to understand for people just starting with Python. You might also likeJoin the newsletterSubscribe to get new articles about Python, code and programming into your inbox! Python list is an actual container as it stores elements of all the data types as a collection. Knowledge of certain list operations is necessary for day-day programming. To find an element in the Python list, use the list index() method. The list index() is a built-in method that searches for an element in the list and returns its index. There is another approach which is a Python Linear search on the list. Find an element using the list index() methodTo find an element in the list, use the Python list index() method, The index() is an inbuilt Python method that searches for an item in the list and returns its index. The index() method finds the given element in the list and returns its position. If the same element is present more than once, the method returns the index of the first occurrence of the element. The index in Python starts from 0, not 1. So, through an index, we can find the position of an element in the list. See the following code example. # app.py streaming = ['netflix', 'hulu', 'disney+', 'appletv+'] index = streaming.index('disney+') print('The index of disney+ is:', index) Output➜ pyt python3 app.py The index of disney+ is: 2 ➜ pyt The index() method takes a single argument, which is the element and returns its position in the list. Python search on the listIt is the straightforward approach is to do a linear search; for example,
See the following code. # app.py def search(list, platform): for i in range(len(list)): if list[i] == platform: return True return False streaming = ['netflix', 'hulu', 'disney+', 'appletv+'] platform = 'netflix' if search(streaming, platform): print("Platform is found") else: print("Platform does not found") We have first created a user-defined function called a search that accepts two arguments in the above code. The first argument is our list in which we need to find the item, and the second parameter is the platform, which is the string we need to search in the list. So, we are looping through a list and comparing each list element to the platform argument. If both are matched, the element is found; otherwise, it is not. Output➜ pyt python3 app.py Platform is found ➜ pyt Check if the item exists in the list using the “in” operatorTo check if an element exists in the list, use Python in operator. Syntaxelement in list It will return True if an element exists in the list; else, it will return False. See the following code. # app.py streaming = ['netflix', 'hulu', 'disney+', 'appletv+'] platform = 'hulu' if platform in streaming: print('Hulu is in the streaming service business') else: print('It does not include') Output➜ pyt python3 app.py Hulu is in the streaming service business ➜ pyt Filtering a collection in PythonTo find all elements in a sequence that meet a specific condition, use the list comprehension or generator expressions. See the following code example. # app.py streaming = ['netflix', 'hulu', 'disney+', 'appletv+'] platform = 'hulu' result = any(len(elem) == 8 for elem in streaming) if result: print("Yes, string with length 8 is found") else: print('Not found') In the above code, we search for an element whose string length is 8. If found, it will print “Yes, string with length 8 is found”; otherwise, not found. Output➜ pyt python3 app.py Yes, string with length 8 is found ➜ pyt ConclusionPython lists can contain different data types like integer, string, boolean, etc. Sometimes, it requires to search particular elements in the list. The items can be searched in the python list in various ways. We have seen the ways like search elements in the list by index, linear search on the list, That is it for the Python find in list example. Related PostsHow to Access Characters in String by Index in Python How to Convert Python List to JSON How to Convert Python Dictionary to String How to Convert Python List to Dictionary How to Convert Python String to List and List to String How do you match data in a list in Python?sort() and == operator. The list. sort() method sorts the two lists and the == operator compares the two lists item by item which means they have equal data items at equal positions. This checks if the list contains equal data item values but it does not take into account the order of elements in the list.
Can you use == for lists in Python?A straightforward way to check the equality of the two lists in Python is by using the equality == operator. When the equality == is used on the list type in Python, it returns True if the lists are equal and False if they are not.
How do you find a specific item in a list Python?To find an element in the list, use the Python list index() method, The index() is an inbuilt Python method that searches for an item in the list and returns its index. The index() method finds the given element in the list and returns its position.
How do you match a string to a list in Python?Python Find String in List using count() We can also use count() function to get the number of occurrences of a string in the list. If its output is 0, then it means that string is not present in the list. l1 = ['A', 'B', 'C', 'D', 'A', 'A', 'C'] s = 'A' count = l1.
|