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條經驗 獲得超7個贊
您可以使用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) 查找,但散列仍然引入開銷。
添加回答
舉報
