有一个类似的问题,张贴在其他线程,但我想有一个不同的输出 如何比较两个列表以保持匹配的子字符串
列表A的模式并不一致
A = ['dataFile1999', 'dataFile::2000', 'Resultx2001', 'Filter2002']
B = ['2000', '1999', '1998', '2005', '2002','2005']
C = [x for x in A if any(b in x for b in B)]
print(C)
输出:
['dataFile::2000', 'dataFile1999','Filter2002']
但我希望输出的顺序与子字符串列表B相同 此外,如果缺少任何字符串,则仍应将该字符串保留在列表中
['dataFile::2000','dataFile1999','1998','2005','Filter2002','2005']
复杂的一行,只是为了好玩;) 没有关于模式的假设
或者没有
filter
这将是一个等效的扩展代码:
这是一个更有效的版本:
也许可以添加另一个列表,该列表获取B中不在C中的所有项,然后将结果添加到另一个列表中
由于列表A有一个一致的模式,这些模式应该可以很好地工作:
输出:
或
输出:
编辑
正如OP所提到的,列表A的前缀可以是一致的,因此:
输出:
相关问题 更多 >
编程相关推荐