代码点读机 / Python / zip

zip Python · 内置函数

`zip` 把多个可迭代对象“拉链式”地合并起来,每次从各个对象中取出一个元素组成元组。就像是红娘,把多个相亲的人分成几组,每次从各个组里取出两个来拉郎配。(这里不一定是两个,只是打个比方而已。)

怎么用

zip(可迭代对象1, 可迭代对象2, ...)

小例子

名字 = ["小明", "小红", "小刚"]
年龄 = [18, 17, 19]
for 姓名, 岁数 in zip(名字, 年龄):
    print(f"{姓名}今年{岁数}岁")

运行结果

小明今年18岁
小红今年17岁
小刚今年19岁

对比:手动用索引配对

for i in range(len(名字)):
    print(f"{名字[i]}今年{年龄[i]}岁")
用 `zip` 更简洁,而且能自动处理长度不一致的情况(以最短的为准)。

常见使用场景

1. 同时遍历多个列表:
科目 = ["语文", "数学", "英语"]
成绩 = [85, 92, 78]
for 科, 分 in zip(科目, 成绩):
    print(科, 分)
2. 创建字典:
键 = ["a", "b", "c"]
值 = [1, 2, 3]
字典 = dict(zip(键, 值))
print(字典)   # {'a': 1, 'b': 2, 'c': 3}
3. 解压配对列表:
配对 = [(1, 'a'), (2, 'b')]
数字, 字母 = zip(*配对)
print(数字)   # (1, 2)
print(字母)   # ('a', 'b')

提醒:- `zip` 返回一个迭代器,需要用 `list()` 或 `for` 循环取出内容。 - 如果多个可迭代对象长度不同,`zip` 会在最短的耗尽时停止,忽略多余元素。 - 如果需要严格长度匹配,可以使用 `itertools.zip_longest`。

官方文档:https://docs.python.org/zh-cn/3/library/functions.html#zip

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条