python - 列表理解打破内循环
问题描述
keyword = ['air','water' ,'fire','earth']
actual = ['air','water earth']
new = []
for a in actual:
for k in keyword:
if k in a:
new.append(a)
break
print("\n".join(new))
#air
#water earth
如果没有break
,它将打印
#air
#water earth
#water earth
如何将其转换为列表理解并使用关键字break
?
我的代码是
[new.append(a) for a in actual for k in keyword if k in a]
请帮助我。
解决方案
您可以更改您对病情的看法,例如:
In []:
new = [a for a in actual if any(k in a for k in keyword)]
print(new)
Out[]:
['air', 'water earth']
这在长形式将是:
new = []
for a in actual:
if any(k in a for k in keywords):
new.append(a)
这在功能上相当于带break的内循环,因为any()
会短路。
推荐阅读
- django - 添加两个数字并在同一页面上显示输出
- docker - 在 ./Dockerfile (.NET Core) 中找不到 GitHub Dockerfile
- c# - 删除字符串 C# 的第一个和最后一个字符
- javascript - 如何在我的测试代码中跟踪可能的异步竞争条件?
- django - Django 使用 ForeignKey 模型在基于类的视图中显示额外内容
- python - 如何从 https://github.com/ONSBigData/parsing_company_accounts 在服务器上安装 xbrl_parser?
- database - 了解 SSTable 实现
- r - 将列标题粘贴为轴标签
- python - 即使明显满足条件,KeyboardInterrupt 也不起作用
- javascript - 摩纳哥编辑器:找不到模块“摩纳哥编辑器”,但已安装