3 回答

TA贡献1825条经验 获得超4个赞
你很接近,使用任何:
C=[x for x in A if any(b in x for b in B)]
更详细:
A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']
B = ['2000', '2001']
C = [x for x in A if any(b in x for b in B)]
print(C)
输出
['dataFile2000', 'dataFile2001']

TA贡献1936条经验 获得超6个赞
您可以使用any()来检查列表中是否有任何元素B在 x 中:
A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']
B = ['2000', '2001']
c = [x for x in A if any(k in x for k in B)]
print(c)
输出:
['dataFile2000', 'dataFile2001']

TA贡献1847条经验 获得超7个赞
首先,我将构建setO(1) 查找时间的年份。1
>>> A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']
>>> B = ['2000', '2001']
>>>
>>> years = set(B)
现在,仅保留A该结尾的元素为years。
>>> [file for file in A if file[-4:] in years]
>>> ['dataFile2000', 'dataFile2001']
1如果您有非常小的列表(两个元素肯定符合条件),请保留列表。集合具有 O(1) 查找,但散列仍然引入开销。
添加回答
举报