网易首页 > 网易号 > 正文 申请入驻

Python 内置函数:zip()

0
分享至

在 Python 中,zip() 是一个功能强大的内置函数,用于将多个可迭代对象中的元素按索引位置组合成元组,从而形成新的迭代器。它常用于配对、合并、并行遍历等操作,是处理多个数据序列的利器。

zip() 这个名字形象地说明了它的功能:把多个序列“咬合”在一起,像拉链(zipper)那样逐项配对。

一、函数语法

zip(iterable1, iterable2, ..., iterableN)

参数:

iterable1, iterable2, ..., iterableN:一个或多个可迭代对象(如列表、元组、字符串、range 等)。个数不限,但结果中只保留最短可迭代对象的长度对应的元素。

返回值:

返回一个迭代器对象(zip 类型),每个元素是一个由传入各个可迭代对象中同索引元素组成的元组。

如果需要查看全部结果,可使用 list() 或 tuple() 将其转换为列表或元组。

二、基础用法示例

1、将两个列表打包成对

names = ['Alice', 'Bob', 'Charlie']
scores = [90, 85, 78]

for name, score in zip(names, scores):
    print(f"{name}: {score}")

输出:

Alice: 90
Bob: 85
Charlie: 78

2、zip() 返回 zip 对象,需转换为列表或元组查看结果

a = [1, 2, 3]
b = ['a', 'b', 'c']

z = zip(a, b)
print(list(z))  

# 输出: [(1, 'a'), (2, 'b'), (3, 'c')]

3、多个可迭代对象

a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['x', 'y', 'z']

print(list(zip(a, b, c)))

# 输出:[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]

4、 长度不一致时,按最短截断

a = [1, 2, 3]
b = ['a', 'b']

print(list(zip(a, b)))

# 输出:[(1, 'a'), (2, 'b')]   # 第 3 个元素被舍弃

三、典型应用场景

1、构建字典

keys = ['id', 'name', 'age']
values = [101, 'Alice', 18]

person = dict(zip(keys, values))
print(person)

# 输出:{'id': 101, 'name': 'Alice', 'age': 18}

2、并行遍历多个序列

students = ['Tom', 'Jerry', 'Spike']
scores = [88, 92, 75]

for name, score in zip(students, scores):
    print(f"{name}: {score}")

输出:

Tom: 88
Jerry: 92
Spike: 75

3、解包(逆操作)

使用 * 运算符可以解包已 zip 的数据。

zipped = [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
names, ages = zip(*zipped)
print(names)    # 输出: ('Alice', 'Bob', 'Charlie')
print(ages)    # 输出: (25, 30, 35)

*matrix 是解包操作符,表示将 matrix 中的每一项单独取出作为参数传入函数。

4、转置(tranpose)二维列表

matrix = [
    [1, 2, 3],
    [4, 5, 6]
]

transposed = list(zip(*matrix))
print(transposed)

# 输出:列表的行列互换
# [(1, 4), (2, 5), (3, 6)]

四、补充说明

1、zip() 返回的是惰性迭代器,不会立即生成所有结果,而是在遍历时逐个计算,适合大数据处理。

即,zip() 返回的是迭代器,只能被消费一次。

zipped = zip(names, ages)

list(zipped)  # 第一次可以正常使用
list(zipped)  # 第二次返回空列表

2、想强制“等长配对”可以使用 itertools.zip_longest(),会填补较短列表的缺失值(需要引入标准库)。

from itertools import zip_longest

a = [1, 2]
b = ['a', 'b', 'c']

print(list(zip_longest(a, b, fillvalue='-')))

# 输出:[(1, 'a'), (2, 'b'), ('-', 'c')]

3、zip() 可与 enumerate() 配合使用。

names = ['Tom', 'Jerry', 'Spike']
scores = [88, 92, 75]

for i, (n, s) in enumerate(zip(names, scores), start=1):
    print(f"第{i}位:{n}({s}分)")

4、在 Python 2 中,zip() 直接返回列表而非迭代器。

5、当处理大型数据集时,zip() 比手动索引更高效且更 Pythonic。

zip() 是 Python 中处理并行迭代的强大工具,可以使代码更简洁、更易读,特别适合需要同时处理多个相关数据序列的场景。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
比父母生病更可怕的是,他们把养老钱给了外人,还反过来说你不孝

比父母生病更可怕的是,他们把养老钱给了外人,还反过来说你不孝

小马达情感故事
2026-01-15 12:55:02
据说:市面上90%的烤鸭都是用这种做的?你还吃吗?

据说:市面上90%的烤鸭都是用这种做的?你还吃吗?

今朝牛马
2026-01-08 18:32:41
穆里尼奥:葡萄牙名帅只有一个!超巨有C罗、尤西比奥、菲戈!

穆里尼奥:葡萄牙名帅只有一个!超巨有C罗、尤西比奥、菲戈!

氧气是个地铁
2026-01-16 19:19:38
他曾是广州市长,两袖清风,卸任26年后病逝,却为何引发集体追悼

他曾是广州市长,两袖清风,卸任26年后病逝,却为何引发集体追悼

历史龙元阁
2026-01-16 14:45:07
摆满院子的东风快递,美国人看后心里踏实了:原来是这么造的

摆满院子的东风快递,美国人看后心里踏实了:原来是这么造的

趣生活
2026-01-12 21:36:45
最后通牒已下, 特朗普点名中俄后, 丹麦通知全球:不许中国去投资

最后通牒已下, 特朗普点名中俄后, 丹麦通知全球:不许中国去投资

时时有聊
2026-01-16 07:28:42
美国ITC正式对无线通信设备及其组件启动337调查 一加、TCL等为列名被告

美国ITC正式对无线通信设备及其组件启动337调查 一加、TCL等为列名被告

财联社
2026-01-16 10:38:56
治功能障碍新方法,不止有伟哥,巧用一个中成药,助你雄风再起

治功能障碍新方法,不止有伟哥,巧用一个中成药,助你雄风再起

中医陈旺医生
2026-01-16 16:01:46
证监会出手!A股公司高管被立案,涉嫌短线交易!

证监会出手!A股公司高管被立案,涉嫌短线交易!

证券时报e公司
2026-01-16 20:20:00
HJT闪耀大马:东方日升再签光伏项目加速东南亚布局

HJT闪耀大马:东方日升再签光伏项目加速东南亚布局

商业透镜
2026-01-16 11:09:12
提到中国,委内瑞拉代总统最新发声

提到中国,委内瑞拉代总统最新发声

环球时报国际
2026-01-16 12:45:37
特战部队进驻台北!赖清德当局开始慌了,下令加强防斩首演练

特战部队进驻台北!赖清德当局开始慌了,下令加强防斩首演练

温读史
2026-01-14 10:23:23
和特斯拉硬刚?小米YU7全系推出7年低息购车:首付4.99万元起,月供2593元起

和特斯拉硬刚?小米YU7全系推出7年低息购车:首付4.99万元起,月供2593元起

每日经济新闻
2026-01-15 21:04:07
伴郎破坏婚礼后续:正脸被扒已社死,目的曝光,新娘发长文表态

伴郎破坏婚礼后续:正脸被扒已社死,目的曝光,新娘发长文表态

史行途
2026-01-13 13:35:16
演员句号:再婚娶丫蛋为妻,尽心孝顺岳父岳母,活成了贤夫孝子

演员句号:再婚娶丫蛋为妻,尽心孝顺岳父岳母,活成了贤夫孝子

清衣渡a
2026-01-16 05:01:45
重庆合川呆呆爆火后续!满屋堆成山的礼物全部化成整个村的温暖

重庆合川呆呆爆火后续!满屋堆成山的礼物全部化成整个村的温暖

南方健哥
2026-01-15 15:15:05
安徽第二医学院"掌门人"敲定,安医大副校长吕雄文赴任

安徽第二医学院"掌门人"敲定,安医大副校长吕雄文赴任

Delete丨CC
2026-01-16 19:43:09
韦德:火箭需要保罗,他能将火箭球员团结在一起!

韦德:火箭需要保罗,他能将火箭球员团结在一起!

爱体育
2026-01-16 23:49:30
一个人最大的愚蠢,就是轻易公开这两件事

一个人最大的愚蠢,就是轻易公开这两件事

诗词中国
2026-01-11 19:41:27
这种保温杯早被国家禁了,可能引发慢性中毒,很多人却成天不离手

这种保温杯早被国家禁了,可能引发慢性中毒,很多人却成天不离手

DrX说
2025-12-16 14:36:14
2026-01-17 05:52:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1710文章数 72关注度
往期回顾 全部

科技要闻

贾国龙与罗永浩被禁言,微博CEO回应

头条要闻

罗永浩、贾国龙微博账号均被禁言

头条要闻

罗永浩、贾国龙微博账号均被禁言

体育要闻

全队身价=登贝莱,他们凭什么领跑法甲?

娱乐要闻

李湘翻车,早就有迹可循!

财经要闻

清流|酒店商家在携程和美团之间沦为炮灰

汽车要闻

方程豹品牌销量突破30万辆 2026年还将推出轿跑系列

态度原创

教育
本地
艺术
公开课
军事航空

教育要闻

初中三年,最怕“掉队式沉默”

本地新闻

云游内蒙|黄沙与碧波撞色,乌海天生会“混搭”

艺术要闻

齐白石画头毛驴当马卖,卖了1300万,网友:笑喷了!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

欧洲多国向格陵兰岛派遣军事人员 白宫回应

无障碍浏览 进入关怀版