![](/img/trans.png)
[英]How to compare two lists to keep matching substrings and also how to retain the order based on substring?
[英]How to compare two lists to keep matching substrings?
我可以描述它,我有兩個字符串列表,我想返回列表A中包含列表B中任何字符串的所有結果。以下是詳細信息:
A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']
B = ['2000', '2001']
我怎么回來
C = ['dataFile2000', 'dataFile2001']?
我一直在研究列表理解,做下面的事情
C=[x for x in A if B in A]
但我似乎無法使其發揮作用。 我是在正確的軌道上嗎?
你很親密,使用任何 :
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']
您可以使用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']
首先,我將為O(1)查找時間構建一set
年份。 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)查找,但散列仍然引入開銷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.