Python – Strings with all given List characters

GIven Strings List and character list, extract all strings, having all characters from character list.
Input : test_list = [“Geeks”, “Gfg”, “Geeksforzambiatek”, “free”], chr_list = [ ‘f’, ‘r’, ‘e’]
Output : [‘free’, “Geeksforzambiatek”]
Explanation : Only “free” and “Geeksforzambiatek” contains all ‘f’, ‘r’ and ‘e’.Input : test_list = [“Geeks”, “Gfg”, “Geeksforzambiatek”, “free”], chr_list = [‘x’]
Output : []
Explanation : No word contains ‘x’.
Method #1 : Using loop
In this, we iterate for all elements from list, and check if all are present in particular string, if yes, then that string is appended to result.
Python3
# Python3 code to demonstrate working of # Strings with all List characters# Using loop# initializing listtest_list = ["Geeks", "Gfg", "Geeksforzambiatek", "free"]# printing original listprint("The original list is : " + str(test_list))# initializing char_list chr_list = ['g', 'f']res_list = []for sub in test_list: res = True for ele in chr_list: # check if any element is not present if ele not in sub: res = False break if res: res_list.append(sub)# printing resultsprint("Filtered Strings : " + str(res_list)) |
The original list is : ['Geeks', 'Gfg', 'Geeksforzambiatek', 'free'] Filtered Strings : ['Gfg', 'Geeksforzambiatek']
Time Complexity: O(n*n), where n is the length of the input list.
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the list “test_list”.
Method #2 : Using all() + list comprehension
In this, we check for all characters presence using all(), and if checks out, String is appended into result. Iteration part done in list comprehension as one-liner.
Python3
# Python3 code to demonstrate working of # Strings with all List characters# Using all() + list comprehension# initializing listtest_list = ["Geeks", "Gfg", "Geeksforzambiatek", "free"]# printing original listprint("The original list is : " + str(test_list))# initializing char_list chr_list = ['g', 'f']# using all() to check containment of all charactersres_list = [sub for sub in test_list if all(ele in sub for ele in chr_list)]# printing resultsprint("Filtered Strings : " + str(res_list)) |
The original list is : ['Geeks', 'Gfg', 'Geeksforzambiatek', 'free'] Filtered Strings : ['Gfg', 'Geeksforzambiatek']
Method 3: Using the set and all functions.
Step by step approach:
- Initialize the original list of strings.
- Initialize the list of characters to be checked for containment.
- Create an empty list to store the filtered strings.
- Convert the list of characters to be checked for containment into a set.
- Use a list comprehension to filter the strings that contain all the characters in the set.
- Print the original list and the filtered strings list.
Python3
# initializing listtest_list = ["Geeks", "Gfg", "Geeksforzambiatek", "free"]# printing original listprint("The original list is : " + str(test_list))# initializing char_list chr_list = ['g', 'f']# initializing filtered strings listres_list = []# convert the list of characters to be checked for containment into a setchr_set = set(chr_list)# use a list comprehension to filter the strings that contain all the characters in the setres_list = [sub for sub in test_list if chr_set.issubset(set(sub.lower()))]# printing resultsprint("Filtered Strings : " + str(res_list)) |
The original list is : ['Geeks', 'Gfg', 'Geeksforzambiatek', 'free'] Filtered Strings : ['Gfg', 'Geeksforzambiatek']
Time complexity: O(n*m), where n is the number of strings in the original list and m is the length of the characters to be checked for containment.
Auxiliary space: O(k), where k is the number of strings that pass the filter.
Method 4: Use the filter() function and lambda function
Converting the list of characters to lowercase for case-insensitive matching using filter() function with a lambda function to filter the strings
Python3
# initializing listtest_list = ["Geeks", "Gfg", "Geeksforzambiatek", "free"]# printing original listprint("The original list is : " + str(test_list))# initializing char_listchr_list = ['g', 'f']chr_list_lower = [c.lower() for c in chr_list]res_list = list(filter(lambda x: all(c in x. lower() for c in chr_list_lower), test_list))# printing resultsprint("Filtered Strings : " + str(res_list)) |
The original list is : ['Geeks', 'Gfg', 'Geeksforzambiatek', 'free'] Filtered Strings : ['Gfg', 'Geeksforzambiatek']
The time complexity of this approach is O(n * m), where n is the length of the test_list and m is the maximum length of a string in the test_list.
The auxiliary space complexity is O(k), where k is the length of chr_list.



