listA = ['abcd754_efgh_20160110_165623.frf', 'abcd754_efghijk_20160110_162419.frf', 'abcd755_mno_20160110_165287.frf', 'abcd755_mnopqr_20160110_164562.frf' ]
listB = ['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_', 'abcd755_mnopqr_']
我有列表A和列表B.列表A有时可能缺少一个或两个元素。基于此,我需要通过维护相同的顺序来创建列表B中包含元素的列表C.
我一直无法找到解决方案。
答案 0 :(得分:1)
你可以这样做:
listA = ['abcd754_efgh_20160110_165623.frf', 'abcd754_efghijk_20160110_162419.frf', 'abcd755_mno_20160110_165287.frf']
listB = ['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_', 'abcd755_mnopqr_']
listC = []
for b in listB:
if any(a.startswith(b) for a in listA):
listC.append(b)
print listC
输出['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_']
您没有指定listB中的元素是否需要listA中的元素,因此如果您想要另一种方式,请在not
之前添加any
。
这是一个简单的二次解决方案,如果你有很多元素,你需要更高效的
答案 1 :(得分:1)
使用listcomp,您可以说:
listC = [b for b in listB if any(b in a for a in listA)]
有关
listA = ['abcd754_efgh_20160110_165623.frf', 'abcd754_efghijk_20160110_162419.frf', 'abcd755_mno_20160110_165287.frf']
listB = ['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_', 'abcd755_mnopqr_']
打印
['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_']