我有一个 python 列表
list1 = ['TC_TEST1', 'TC_TEST1_TEST2', 'TC_TEST3', 'TC_TEST1TEST2']
sublist1 = ['TEST1', 'TEST3']
期望的输出是
result = ['TC_TEST1', 'TC_TEST3']
它不应包含 sublist1 中出现在字符串中间或其他位置的模式。
我试过用
result = [s for s in list1 if any(xs in s for xs in sublist1)]
但这也会打印字符串中出现的任何模式,而不仅仅是结尾部分。
最佳答案
你可以试试这个:
list1 = {'TC_TEST1', 'TC_TEST1_TEST2', 'TC_TEST3', 'TC_TEST1TEST2'}
sublist1 = { 'TEST1', 'TEST3'}
final_list = [i for i in list1 if any(i.endswith(b) for b in sublist1)]
输出:
set(['TC_TEST3', 'TC_TEST1'])
元组的高级特性:
sublist1 = ('TEST1', 'TEST3')
final_list = [i for i in list1 if i.endswith(sublist1)]
关于python - 根据以一组子字符串中的一个结尾对 Python 列表进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140688/