In this article, we’ll take a look at how we can find a string in a list in Python.
Find a String in a List in Python
There are various approaches to this problem, from the ease of use to efficiency.
Using the ‘in’ operator
We can use Python’s in operator to find a string in a list in Python. This takes in two operands
b, and is of the form:
ret_value = a in b
ret_value is a boolean, which evaluates to
a lies inside
We can directly use this operator in the following way:
a = [1, 2, 3] b = 4 if b in a: print('4 is present!') else: print('4 is not present')
4 is not present
We can also convert this into a function, for ease of use.
def check_if_exists(x, ls): if x in ls: print(str(x) + ' is inside the list') else: print(str(x) + ' is not present in the list') ls = [1, 2, 3, 4, 'Hello', 'from', 'AskPython'] check_if_exists(2, ls) check_if_exists('Hello', ls) check_if_exists('Hi', ls)
2 is inside the list Hello is inside the list Hi is not present in the list
This is the most commonly used, and recommended way to search for a string in a list. But, for illustration, we’ll show you other methods as well.
Using List Comprehension
Let’s take another case, where you wish to only check if the string is a part of another word on the list and return all such words where your word is a sub-string of the list item.
Consider the list below:
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi']
If you want to search for the substring
Hello in all elements of the list, we can use list comprehensions in the following format:
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] matches = [match for match in ls if "Hello" in match] print(matches)
This is equivalent to the below code, which simply has two loops and checks for the condition.
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] matches =  for match in ls: if "Hello" in match: matches.append(match) print(matches)
In both cases, the output will be:
['Hello from AskPython', 'Hello', 'Hello boy!']
As you can observe, in the output, all the matches contain the string
Hello as a part of the string. Simple, isn’t it?
Using the ‘any()’ method
In case you want to check for the existence of the input string in any item of the list, We can use the any() method to check if this holds.
For example, if you wish to test whether ‘AskPython’ is a part of any of the items of the list, we can do the following:
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] if any("AskPython" in word for word in ls): print('\'AskPython\' is there inside the list!') else: print('\'AskPython\' is not there inside the list')
'AskPython' is there inside the list!
Using filter and lambdas
We can also use the
filter() method on a lambda function, which is a simple function that is only defined on that particular line. Think of lambda as a mini function, that cannot be reused after the call.
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] # The second parameter is the input iterable # The filter() applies the lambda to the iterable # and only returns all matches where the lambda evaluates # to true filter_object = filter(lambda a: 'AskPython' in a, ls) # Convert the filter object to list print(list(filter_object))
['Hello from AskPython']
We do have what we expected! Only one string matched with our filter function, and that’s indeed what we get!
In this article, we learned about how we can find a string with an input list with different approaches. Hope this helped you with your problem!
- JournalDev article on finding a string in a List
- StackOverflow question on finding a string inside a List