一、核心功能与定位
itertools.pairwise(iterable)本质上是一个滑动窗口生成器,它将输入序列转换为相邻元素对的迭代器。例如:
- 输入
[1,2,3,4]→ 输出(1,2), (2,3), (3,4) - 输入
"ABCDE"→ 输出('A','B'), ('B','C'), ('C','D'), ('D','E')
其核心价值在于:
- 代码简洁性:替代传统的
for i in range(len(seq)-1)循环写法 - 内存效率:返回迭代器而非列表,适合处理大型数据集
- 功能组合性:可与列表推导式、生成器表达式等无缝集成
二、技术细节与版本兼容性
| 特性 | 说明 |
|---|---|
| 引入版本 | Python 3.10+(2021 年发布) |
| 返回类型 | 迭代器(需转换为 list 查看具体内容) |
| 输入要求 | 任何可迭代对象(列表、字符串、生成器等) |
| 输出数量 | 输入长度 -1(若输入长度<2 则返回空迭代器) |
低版本兼容方案(Python <3.10):
# 官方等效实现
def pairwise(iterable):
iterator = iter(iterable)
a = next(iterator, None)
for b in iterator:
yield a, b
a = b
或者使用 itertools.tee 实现:
from itertools import tee
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return zip(a, b)
三、典型应用场景
1. 数值序列分析
itertools pairwise
temperatures = [, , , , ]
diffs = [b - a a, b pairwise(temperatures)]
(diffs)
nums = [, , , , ]
nums.sort()
min_diff = (b - a a, b pairwise(nums))

