In [20]: e=["2311","1441","31","233122"]
In [21]: r=["asasa2311","dadewr1441","app"]
In [22]: [x for x in e if any(x in re.findall("\d+",y) for y in r)]
Out[22]: ['2311', '1441']
>>> 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']
或者如果您想要预期的输出:
^{pr2}$
或者,如果你想在第一场比赛中更有效率地爆发,可以使用生成器方法:
>>> 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']
In [516]: Experimental = ["2311","1441","31","233122"]
...: Reference = ["asasa2311","dadewr1441","app"]
...:
In [517]: [i for i in Experimental for x in Reference if i in x ]
Out[517]: ['2311', '1441', '31']
您应该在此处使用
regex
:您的问题陈述与预期输出不匹配。您说“sub string”,但是您期望的输出不包含
31
,即使它是asasa1311
的子字符串。以下是一种方法:或者如果您想要预期的输出:
^{pr2}$或者,如果你想在第一场比赛中更有效率地爆发,可以使用生成器方法:
如果使用
in
返回布尔值的事实,则可以缩短一点:你能解释一下这个问题,因为
31
也产生了一个匹配的子串asasa1311
。在相关问题 更多 >
编程相关推荐