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
test_list1
=
[
"Geeksforgeeks"
,
"best"
,
"for"
,
"geeks"
]
test_list2
=
[
"Geeks"
,
"win"
,
"or"
,
"learn"
]
print
[
"The original list 1 is : "
+
str
[test_list1]]
print
[
"The original list 2 is : "
+
str
[test_list2]]
res
=
list
[
set
[[ele1
for
sub1
in
test_list1
for
ele1
in
test_list2
if
ele1
in
sub1]]]
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
test_list1
=
[
"Geeksforgeeks"
,
"best"
,
"for"
,
"geeks"
]
test_list2
=
[
"Geeks"
,
"win"
,
"or"
,
"learn"
]
print
[
"The original list 1 is : "
+
str
[test_list1]]
print
[
"The original list 2 is : "
+
str
[test_list2]]
res
=
[ele2
for
ele2
in
test_list2
if
any
[ele2
in
ele1
for
ele1
in
test_list1]]
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
test_list1
=
[
"Geeksforgeeks"
,
"best"
,
"for"
,
"geeks"
]
test_list2
=
[
"Geeks"
,
"win"
,
"or"
,
"learn"
]
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]
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']