您好,我有一个字符串列表和一个前缀列表。我想从字符串列表中删除以前缀列表中的前缀开头的所有元素。
我使用了for循环,但它似乎不起作用。有什么想法吗?
list_of_strings = ['test-1: foo', 'test-2: bar', 'test-3: cat']
list_of_prefixes = ['test1', 'test-2']
final_list = []
for i in list_of_strings:
for j in list_of_prefixes:
if not i.startswith(j):
final_list.append(i)
print(list(set(final_list)))
# ['test-3: cat', 'test-1: foo', 'test-2: bar']
我想要得到的预期最终输出是:
final_list = ['test-3: cat']
您可以将
startswith()
与 flag
一起使用:
def _filter(list_of_strings, list_of_prefixes):
final_list = []
for i in list_of_strings:
flag = False
for j in list_of_prefixes:
if i.startswith(j):
flag = True
break
if not flag:
final_list.append(i)
return final_list
list_of_strings = ['test-1: foo', 'test-2: bar', 'test-3: cat']
list_of_prefixes = ['test-1', 'test-2']
print(_filter(list_of_strings, list_of_prefixes))
['test-3: cat']