继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 zip

2882716
关注TA
已关注
手记 70
粉丝 0
获赞 0

Python 内置的 zip() 函数是一个实用的工具,能够将多个可迭代对象(如列表list、元组tuple、字符串str等)中的元素按顺序配对组合,生成一个新的迭代器。

基本用法

zip() 函数的语法如下:

zip(*iterables)

参数 *iterables 表示可传入多个可迭代对象。

核心特性

  1. 并行迭代zip() 会从每个可迭代对象中各取一个元素,组合成元组
  2. 长度适配:当可迭代对象长度不一致时,以最短的对象为准
  3. 迭代器返回:Python 3 中返回的是 zip 对象(迭代器),而非列表

代码示例

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]

# 基础用法
zipped = zip(names, ages)
print(list(zipped))  # 输出:[('Alice', 25), ('Bob', 30), ('Charlie', 35)]

# 处理不等长序列
scores = [85, 90]
print(list(zip(names, scores)))  # 输出:[('Alice', 85), ('Bob', 90)]

# 解压操作
zipped_data = [('Alice', 25), ('Bob', 30)]
names, ages = zip(*zipped_data)
print(names)  # 输出:('Alice', 'Bob')
print(ages)   # 输出:(25, 30)

典型应用

  1. 多序列遍历:同步迭代多个可迭代对象
  2. 字典构建:配合 dict() 快速创建字典
  3. 矩阵转置:实现二维列表的行列转换
  4. 数据聚合:将关联数据项组合成组

使用注意

  • Python 2 中 zip() 返回列表而非迭代器
  • 需处理不等长序列时,可使用 itertools.zip_longest()
  • zip() 对象为一次性迭代器,如需复用需转换为容器类型

性能优势

zip() 返回迭代器的特性使其在处理大数据集时更高效,避免一次性加载全部数据到内存。

高级应用

# 快速构建字典
keys = ['name', 'age', 'gender']
values = ['Alice', 25, 'Female']
print(dict(zip(keys, values)))  # 输出:{'name': 'Alice', 'age': 25, 'gender': 'Female'}

# 实现矩阵转置
matrix = [[1, 2, 3], [4, 5, 6]]
print(list(zip(*matrix)))  # 输出:[(1, 4), (2, 5), (3, 6)]
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP