3 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
你很接近,使用任何:
C=[x for x in A if any(b in x for b in B)]
更詳細(xì):
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貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用any()來(lái)檢查列表中是否有任何元素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貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,我將構(gòu)建setO(1) 查找時(shí)間的年份。1
>>> A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']
>>> B = ['2000', '2001']
>>>
>>> years = set(B)
現(xiàn)在,僅保留A該結(jié)尾的元素為years。
>>> [file for file in A if file[-4:] in years]
>>> ['dataFile2000', 'dataFile2001']
1如果您有非常小的列表(兩個(gè)元素肯定符合條件),請(qǐng)保留列表。集合具有 O(1) 查找,但散列仍然引入開(kāi)銷。
添加回答
舉報(bào)