姓名和分数分别放在两个列表里时,通常希望它们长度一致。默认zip会在最短输入结束时停止;如果长度不一致,额外元素可能没有机会进入结果。

先约定长度不同时怎么办
如果业务要求一一对应,就应该把长度不一致视为错误,而不是默认接受截断。Python 3.10加入的strict=True可以在发现长度不一致时抛出ValueError。它不是自动补齐功能,也不会猜测哪个列表少了数据。
错误可能在迭代时才出现
zip返回迭代器,因此仅创建对象未必触发检查。示例用list消费结果,以便发现异常。如果真实流程一边遍历一边写入数据库,错误出现前可能已有部分动作发生,需要先校验或设计事务边界。
用正常与异常输入各检查一次
下例先验证两列对应正确,再验证不等长输入会被拒绝。它只使用虚构数据,不包含外部写入。为报表处理选择策略时,应明确报错、补空值或丢弃哪一种符合业务,不能让默认行为替你决定。
可以运行的练习
assert list(zip(["A", "B"], [80, 90], strict=True)) == [("A", 80), ("B", 90)]
try:
list(zip(["A", "B"], [80], strict=True))
except ValueError:
print("已发现两列长度不一致")
else:
raise AssertionError("应该拒绝不等长输入")
示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。
资料与继续学习
Python:zip。资料查阅日期:2026年9月27日。步骤与练习由本站整理。
资料查阅与编辑日期:2026年9月27日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






