Skip to content
Related Articles
Open in App
Not now

Related Articles

Python – Find all the strings that are substrings to the given list of strings

Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 13 Sep, 2022
Improve Article
Save Article

Given two lists, the task is to write a Python program to extract all the strings which are possible substring to any of strings in another list.

Example:

Input : test_list1 = [“Geeksforgeeks”, “best”, “for”, “geeks”], test_list2 = [“Geeks”, “win”, “or”, “learn”]

Output : [‘Geeks’, ‘or’]

Explanation : “Geeks” occurs in “Geeksforgeeks string as substring.

Input : test_list1 = [“geeksforgeeks”, “best”, “4”, “geeks”], test_list2 = [“Geeks”, “win”, “or”, “learn”]

Output : []

Explanation : No substrings found.

Method #1: Using list comprehension

In this, we perform task of using nested loop and testing using list comprehension, extracting the string if its part of any substring of other list.

Python3




# Python3 code to demonstrate working of
# Substring Intersections
# Using list comprehension
 
# initializing lists
test_list1 = ["Geeksforgeeks", "best", "for", "geeks"]
test_list2 = ["Geeks", "win", "or", "learn"]
 
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
# using list comprehension for nested loops
res = list(
    set([ele1 for sub1 in test_list1 for ele1 in test_list2 if ele1 in sub1]))
 
# printing result
print("Substrings Intersections : " + str(res))

Output

The original list 1 is : ['Geeksforgeeks', 'best', 'for', 'geeks']
The original list 2 is : ['Geeks', 'win', 'or', 'learn']
Substrings Intersections : ['or', 'Geeks']

Method #2: Using any() + generator expression

In this, any() is used to check for substring matching in any of the strings from the string list to be matched in.

Python3




# Python3 code to demonstrate working of
# Substring Intersections
# Using any() + generator expression
 
# initializing lists
test_list1 = ["Geeksforgeeks", "best", "for", "geeks"]
test_list2 = ["Geeks", "win", "or", "learn"]
 
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
# any() returns the string after match in any string
# as Substring
res = [ele2 for ele2 in test_list2 if any(ele2 in ele1 for ele1 in test_list1)]
 
# printing result
print("Substrings Intersections : " + str(res))

Output

The original list 1 is : ['Geeksforgeeks', 'best', 'for', 'geeks']
The original list 2 is : ['Geeks', 'win', 'or', 'learn']
Substrings Intersections : ['Geeks', 'or']

Time Complexity: O(n2)

Space Complexity: O(n)

Method #3: Using find() method

Python3




# Python3 code to demonstrate working of
# Substring Intersections
 
# initializing lists
test_list1 = ["Geeksforgeeks", "best", "for", "geeks"]
test_list2 = ["Geeks", "win", "or", "learn"]
 
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
res=[]
for i in test_list2:
    for j in test_list1:
        if(j.find(i)!=-1 and i not in res):
            res.append(i)
 
# printing result
print("Substrings Intersections : " + str(res))

Output

The original list 1 is : ['Geeksforgeeks', 'best', 'for', 'geeks']
The original list 2 is : ['Geeks', 'win', 'or', 'learn']
Substrings Intersections : ['Geeks', 'or']

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!