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全部词条