Python 如何比较两个列表以保持匹配的子字符串?
正如我所能描述的,我有两个字符串列表,我想返回列表A中包含列表B中任何字符串的所有结果。以下是详细信息:Python 如何比较两个列表以保持匹配的子字符串?,python,list,list-comprehension,Python,List,List Comprehension,正如我所能描述的,我有两个字符串列表,我想返回列表A中包含列表B中任何字符串的所有结果。以下是详细信息: A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002'] B = ['2000', '2001'] 我怎么回去 C = ['dataFile2000', 'dataFile2001']? 我一直在研究列表的理解,做了如下的事情 C=[x for x in A if B in A] 但我似乎不能让它工作。我
A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']
B = ['2000', '2001']
我怎么回去
C = ['dataFile2000', 'dataFile2001']?
我一直在研究列表的理解,做了如下的事情
C=[x for x in A if B in A]
但我似乎不能让它工作。我在正确的轨道上吗?如果您很接近,请使用:
更详细的信息:
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']
您可以使用检查列表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)查找时间构建一个
集合
现在,只保留以年元素结尾的元素
>>> [file for file in A if file[-4:] in years]
>>> ['dataFile2000', 'dataFile2001']
1如果您有非常小的列表(两个元素肯定符合条件),请保留这些列表。集合有O(1)查找,但哈希仍然会引入开销。太棒了,这就像一个魅力。谢谢你的快速回复!
>>> A = ['dataFile1999', 'dataFile2000', 'dataFile2001', 'dataFile2002']
>>> B = ['2000', '2001']
>>>
>>> years = set(B)
>>> [file for file in A if file[-4:] in years]
>>> ['dataFile2000', 'dataFile2001']