从列表中删除以前缀列表开头的项目

问题描述 投票:0回答:1

您好,我有一个字符串列表和一个前缀列表。我想从字符串列表中删除以前缀列表中的前缀开头的所有元素。

我使用了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']

python python-3.x
1个回答
0
投票

您可以将

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']
© www.soinside.com 2019 - 2024. All rights reserved.