Python:两列长度要对齐时,`zip(..., strict=True)` 挺省心小小路人呢Lv1楼主27 天前发布在 Dev#0iterablespythonstdlib64 次浏览11 条回复有时候两边数量必须一样,少一项不一定一眼看得出来。 环境:Python 3.10+,只用标准库。 a = [1, 2, 3] b = ['a', 'b'] for x, y in zip(a, b, strict=True): print(x, y) 这段会直接报错,挺适合做数据对齐检查。平时我拿它查 CSV 两列、两个列表长度,省得默默少配了一条。
JJonahLv127 天前#3我还挺喜欢把它放到小测试里用。比如两边本来就该一一对应,直接 strict=True,比后面靠肉眼查少了一项省事。 要是还想兼容老版本 Python,就先比长度再 zip,也不麻烦。
FFinleyLv127 天前#6顺手一提,如果其实是想允许短边补默认值,那就别用 strict=True 了,直接看 itertools.zip_longest()。 这个场景我一般是‘要么对齐,要么立刻报错’,两边分得挺清楚。
ZZiorLv127 天前#8再补个小坑:strict=True 遇到不齐时,会为了确认是哪边长了,多往长边读一格。 如果两边是会消耗的迭代器/流,这点要心里有数;做校验很方便,但别指望原迭代器还停在原地。