Python – Filter the List of String whose index in second List contaons the given Substring

Given two lists, extract all elements from the first list, whose corresponding index in the second list contains required substring.

Examples:

Input : test_list1 = [“Gfg”, “is”, “not”, “best”, “and”, “not”, “CS”], 
test_list2 = [“Its ok”, “all ok”, “wrong”, “looks ok”, “ok”, “wrong”, “thats ok”], sub_str = “ok” 
Output : [‘Gfg’, ‘is’, ‘best’, ‘and’, ‘CS’] 
Explanation : All retained contain “ok” as substring in corresponding idx, e.g : Gfg -> Its ok ( has ok ) as substr.
 

Input : test_list1 = [“Gfg”, “not”, “best”], 
test_list2 = [“yes”, “noo”, “its yes”], sub_str = “yes” 
Output : [‘Gfg’, ‘best’] 
Explanation : All retained contain “yes” as substring in corresponding idx, e.g : Gfg -> yes ( has yes ) as substr. 

Method #1 : Using zip() + loop + in operator



In this, we combine the indices using zip(), and in operator is used to check for substring. Loop is used to task of iteration.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to demonstrate working of
# Extract elements filtered by substring 
# from other list Using zip() + loop + in
# operator
  
# initializing list
test_list1 = ["Gfg", "is", "not", "best", "and"
              "not", "for", "CS"]
test_list2 = ["Its ok", "all ok", "wrong", "looks ok",
              "ok", "wrong", "ok", "thats ok"]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# initializing substr
sub_str = "ok"
  
res = []
# using zip() to map by index
for ele1, ele2 in zip(test_list1, test_list2):
  
    # checking for substring
    if sub_str in ele2:
        res.append(ele1)
  
# printing result
print("The extracted list : " + str(res))

chevron_right


Output:

The original list 1 is : [‘Gfg’, ‘is’, ‘not’, ‘best’, ‘and’, ‘not’, ‘for’, ‘CS’]
The original list 2 is : [‘Its ok’, ‘all ok’, ‘wrong’, ‘looks ok’, ‘ok’, ‘wrong’, ‘ok’, ‘thats ok’]
The extracted list : [‘Gfg’, ‘is’, ‘best’, ‘and’, ‘for’, ‘CS’]

Method #2 : Using list comprehension + zip() 

This is similar to above method. The only difference here is that list comprehension is used as shorthand to solve the problem.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to demonstrate working of
# Extract elements filtered by substring
# from other list Using list comprehension + zip()
  
# initializing list
test_list1 = ["Gfg", "is", "not", "best", "and",
              "not", "for", "CS"]
test_list2 = ["Its ok", "all ok", "no", "looks ok",
              "ok", "wrong", "ok", "thats ok"]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# initializing substr
sub_str = "ok"
  
# using list comprehension to perform task
res = [ele1 for ele1, ele2 in zip(test_list1, test_list2) if sub_str in ele2]
  
# printing result
print("The extracted list : " + str(res))

chevron_right


Output:

The original list 1 is : [‘Gfg’, ‘is’, ‘not’, ‘best’, ‘and’, ‘not’, ‘for’, ‘CS’]
The original list 2 is : [‘Its ok’, ‘all ok’, ‘no’, ‘looks ok’, ‘ok’, ‘wrong’, ‘ok’, ‘thats ok’]
The extracted list : [‘Gfg’, ‘is’, ‘best’, ‘and’, ‘for’, ‘CS’]




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.