您的问题陈述与预期的输出不匹配。您说“子字符串”,但您的预期输出不包含31
,即使它是asasa1311
. 这是一种方法:
>>> e = ["2311","1441","31","233122"]
>>> r = ["asasa2311","dadewr1441","app"]
>>> [eelem for relem in r for eelem in e if eelem in relem]
['2311', '31', '1441']
或者如果你想要预期的输出:
>>> e = ["2311","1441","31","233122"]
>>> r = ["asasa2311","dadewr1441","app"]
>>> [eelem for relem in r for eelem in e if relem.endswith(eelem)]
['2311', '1441']
或者,如果您想在第一场比赛中更高效地突破,请使用生成器方法:
>>> e = ["2311","1441","31","233122"]
>>> r = ["asasa2311","dadewr1441","app"]
>>> [eelem for eelem in e if any(r if eelem in relem else False for relem in r)]
['2311', '1441', '31']
in
如果我们使用返回布尔值的事实,或者更短一点:
>>> [eelem for eelem in e if any(eelem in relem for relem in r)]
['2311', '1441', '31']