比如 , 给定两个字典 , 分别是产品名称到价格的映射 , 和产品名称到颜色列表的映射 。 我们要找出价格小于 10 , 并且颜色不是红色的所有产品名称和颜色的组合 。 如果不用 continue , 代码应该是下面这样的:
而加入 continue 后 , 代码显然清晰了很多:
- # name_price: 产品名称 (str) 到价格 (int) 的映射字典# name_color: 产品名字 (str) 到颜色 (list of str) 的映射字典name_price={'A':10'B':9\"C\":11name_color={'A':'红''B':\"黄\"\"C\":\"蓝\"for name price in name_price.items():if price < 10:if name in name_color:for color in name_color[name
:if color != '红':('name: { color: {'.format(name color))else:print('name: { color: {'.format(name 'None'))
- name: B color: 黄
我们可以看到 , 按照第一个版本的写法 , 从开始一直到打印输出符合条件的产品名称和颜色 , 共有 5 层 for 或者 if 的嵌套;但第二个版本加入了 continue 后 , 只有 3 层嵌套 。
- # name_price: 产品名称 (str) 到价格 (int) 的映射字典# name_color: 产品名字 (str) 到颜色 (list of str) 的映射字典name_price={'A':10'B':9\"C\":11name_color={'A':'红''B':\"黄\"\"C\":\"蓝\"for name price in name_price.items():if price >= 10:continueif name not in name_color:print('name: { color: {'.format(name 'None'))continuefor color in name_color[name
:if color == '红':continueprint('name: { color: {'.format(name color))
- name: B color: 黄
显然 , 如果代码中出现嵌套里还有嵌套的情况 , 代码便会变得非常冗余、难读 , 也不利于后续的调试、修改 。 因此 , 我们要尽量避免这种多层嵌套的情况 。
小结
- 在 for 循环中 , 如果需要同时访问索引和元素 , 你可以使用 enumerate() 函数来简化代码 。
- 写条件与循环时 , 合理利用 continue 或者 break 来避免复杂的嵌套 , 是十分重要的 。
Python核心技术系列
Python核心技术——重新定义列表和元组
Python核心技术——重新认识字典和集合
Python核心技术——重新认识字符串
Python核心技术——JSON 序列化与实战
Python核心技术——输入和输出的秘密
Python核心技术——条件分支控制流
Python核心技术——异常处理与实战
- USB|AWS重塑未来:芯片进化加速底层技术创新
- 液晶显示器|大陆屏幕厂用了20年,上千亿元,换来了一个快淘汰的LCD技术?
- 英伟达|NVIDIA新技术让你“暗送秋波” 画面以假乱真
- VR全景技术,为人们带来智慧生活
- 智能灌溉控制系统-农田灌溉机井智能控制系统,节水灌溉的新技术
- 本文转自:科技日报图片来源:物理学家组织网图片来源:美国here技术网元宇宙是互联网上的...|汽车行业热情“拥抱”元宇宙
- 激光器|新型激光器或成下一代以太网技术基础
- 大脑|科研人员创新前沿脑机接口技术 为脑疾病诊疗提供新思路
- 苹果|超级重磅——小米自动驾驶技术研判(2022年8月)
- |陈根:WiFi技术,从联网到“透视”