Python|根据给定的字符串列表过滤列表
给定一个列表,任务是根据另一个字符串列表从列表中过滤元素。这些类型的问题在抓取网站时很常见。
例子:
Input:
List_string1 = ['key', 'keys', 'keyword', 'keychain', 'keynote']
List_string2 = ['home/key/1.pdf',
'home/keys/2.pdf',
'home/keyword/3.pdf',
'home/keychain/4.pdf',
'home/Desktop/5.pdf',
'home/keynote/6.pdf']
Output:
['home/Desktop/5.pdf']
Explanation: We filter only those element from
list_string2 that do not have string in list_string1
以下是实现上述任务的一些方法。
方法#1:使用迭代
# Python code to filter element from list
# based on another list of string.
# List Initialization
Input = ['key', 'keys', 'keyword', 'keychain', 'keynote']
Input_string = ['home/key/1.pdf',
'home/keys/2.pdf',
'home/keyword/3.pdf',
'home/keychain/4.pdf',
'home/Desktop/5.pdf',
'home/keynote/6.pdf']
Output = Input_string.copy()
temp = []
# Using iteration
for elem in Input_string:
for n in Input:
if n in elem:
temp.append(elem)
for elem in temp:
if elem in Output:
Output.remove(elem)
# Printing
print("List of keywords are:", Input)
print("Given list:", Input_string)
print("filtered list is :", Output)
输出:
List of keywords are: [‘key’, ‘keys’, ‘keyword’, ‘keychain’, ‘keynote’]
Given list: [‘home/key/1.pdf’, ‘home/keys/2.pdf’, ‘home/keyword/3.pdf’, ‘home/keychain/4.pdf’, ‘home/Desktop/5.pdf’, ‘home/keynote/6.pdf’]
filtered list is : [‘home/Desktop/5.pdf’]
方法 #2:使用列表推导
# Python code to filter element from list
# based on another list of string.
# List Initialization
Input = ['key', 'keys', 'keyword', 'keychain', 'keynote']
Input_string = ['home/key/1.pdf',
'home/keys/2.pdf',
'home/keyword/3.pdf',
'home/keychain/4.pdf',
'home/Desktop/5.pdf',
'home/keynote/6.pdf']
# Using list comprehension
Output = [b for b in Input_string if
all(a not in b for a in Input)]
# Printing
print("List of keywords are:", Input)
print("Given list:", Input_string)
print("filtered list is :", Output)
输出:
List of keywords are: [‘key’, ‘keys’, ‘keyword’, ‘keychain’, ‘keynote’]
Given list: [‘home/key/1.pdf’, ‘home/keys/2.pdf’, ‘home/keyword/3.pdf’, ‘home/keychain/4.pdf’, ‘home/Desktop/5.pdf’, ‘home/keynote/6.pdf’]
filtered list is : [‘home/Desktop/5.pdf’]