猿问

如何比较两个列表以保持匹配的子字符串?

尽我所能描述它,我有两个字符串列表,我想返回列表 A 中包含列表 B 中任何字符串的所有结果。以下是详细信息:


A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']

B = ['2000', '2001']

我如何返回


C = ['dataFile2000', 'dataFile2001']?

我一直在研究列表理解,做如下事情


C=[x for x in A if B in A] 

但我似乎无法让它发挥作用。我在正确的轨道上吗?


慕的地6264312
浏览 147回答 3
3回答

凤凰求蛊

你很接近,使用任何: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']

LEATH

您可以使用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']

aluckdog

首先,我将构建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) 查找,但散列仍然引入开销。
随时随地看视频慕课网APP

相关分类

Python
我要回答