我有datalist和filterlist,我想用list comprehension方法搜索datalist中的任何一个项目,它的字符串包含filterlist中的任何单词:
>>> datalist=['mytest123orange','dark angle','double69','spartan','broken image 999','2 cup of tea']
>>> filterlist=['test','2','x','123','orange']
>>> print [i for i in datalist if len([ j for j in filterlist if j in i])>0 ]
['test123orange', '2 cup of tea']
它正在按我的要求工作。但问题是要从len([ j for j in filterlist if j in i ])>0
获取值,它需要循环filterlist中的所有项。因此,即使它与filterlist中的第一个项匹配,循环也必须进行到底。例如当
试着检查'mytest123orannge'
,如果filterlist中的测试已经匹配它,那么就足够了,我想“中断”循环,这样我就不想循环其余的内容了。所以我不需要匹配'orange'
或{
我的问题:
将
any()
与生成器一起使用当找到第一个元素时,
any
停止迭代Uri的答案正确,结果列表中最多有一个元素:
如果没有找到匹配项,结果列表将为空。在
结论是
any()
不会导致“短路”,而是在应用any()
之前,整个发电机已经耗尽。在相关问题 更多 >
编程相关推荐