How to check if a string is a substring of items in a list of strings in Python ?

To check if a string is a substring of any item in a list of strings in Python, you can use methods like loops, list comprehensions, or the any() function. Below are detailed explanations with examples:

1. Using a Loop

Iterate through each string in the list and check if the substring exists.

Example 1: Check if substring exists

my_list = ["apple", "banana", "cherry", "date"]
substring = "ana"

found = False
for item in my_list:
    if substring in item:
        found = True
        break  # Exit early if found

print(f"Substring '{substring}' exists in the list: {found}")
# Output: Substring 'ana' exists in the list: True

2. Using List Comprehension

Create a list of True/False values indicating whether the substring exists in each item.

Example 2: Get all items containing the substring

my_list = ["apple", "banana", "cherry", "date"]
substring = "na"

# Get all items containing the substring
matches = [item for item in my_list if substring in item]
print(f"Items containing '{substring}': {matches}")
# Output: Items containing 'na': ['banana', 'cherry']

3. Using any() for a Boolean Result

Check if any item in the list contains the substring (returns True/False).

Example 3: Check existence efficiently

my_list = ["apple", "banana", "cherry", "date"]
substring = "app"

exists = any(substring in item for item in my_list)
print(f"Substring '{substring}' exists: {exists}")
# Output: Substring 'app' exists: True

4. Case-Insensitive Check

Normalize case (lowercase/uppercase) to handle case sensitivity.

Example 4: Case-insensitive substring check

my_list = ["Apple", "Banana", "Cherry", "Date"]
substring = "APP"

# Convert both substring and list items to lowercase
exists = any(substring.lower() in item.lower() for item in my_list)
print(f"Case-insensitive check: {exists}")
# Output: Case-insensitive check: True

5. Find Indices of Matches

Identify the positions of items containing the substring.

Example 5: Get indices of matching items

my_list = ["apple", "banana", "cherry", "date"]
substring = "er"

# Get indices of items containing the substring
indices = [i for i, item in enumerate(my_list) if substring in item]
print(f"Indices of items with '{substring}': {indices}")
# Output: Indices of items with 'er': [2] (cherry)

6. Using filter() Function

Filter the list to retain only items containing the substring.

Example 6: Filter the list

my_list = ["apple", "banana", "cherry", "date"]
substring = "an"

# Filter the list using `filter()`
matches = list(filter(lambda x: substring in x, my_list))
print(f"Filtered matches: {matches}")
# Output: Filtered matches: ['banana']

7. Handling Edge Cases

Example 7: Empty substring or empty list

my_list = ["apple", "banana", "cherry", "date"]
substring = ""

# Empty substring always returns True (every string contains "")
exists = any(substring in item for item in my_list)
print(f"Empty substring check: {exists}")  # Output: True

Summary of Methods

MethodUse CaseExample Code
LoopEarly exit with breakfor item in list: if substring...
any()Quick existence checkany(substring in item...)
List ComprehensionGet filtered list of matches[item for item... if substring...]
Case-InsensitiveIgnore case differencessubstring.lower() in item.lower()
filter()Functional programming approachfilter(lambda x: substring in x...)

Key Notes

  • Use any() for efficient boolean checks (stops at the first match).
  • Use list comprehensions or filter() to extract matching items.
  • Handle case sensitivity explicitly if needed.
  • Avoid checking empty substrings unless intentional.

Leave a Reply

Your email address will not be published. Required fields are marked *