Python 中如何按指定阶数n高效实现列表的转换排列功能
列表指定阶数转换实现方案
需求说明
我们需要实现一种高效方法,将给定列表转换为带指定阶数n的目标列表。
输入示例
lst = [1, 2, 3, 4, 5, 6, 7] n = 3
期望输出
[[1], [1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7], [7]]
规则说明
结果列表中的每个元素,除了首尾
n-1个索引对应的元素(本示例中为1, 2, 6, 7),其余均由原列表的n个连续元素组成。
整数n需满足约束条件:1 <= n <= len(lst)
实现代码
一行式简洁实现
时间复杂度为O(L)(L为原列表长度),无额外冗余开销:
res = [lst[max(0, i):min(len(lst), i + n)] for i in range(1 - n, len(lst))]
高可读性带校验版本
def sliding_expand(lst: list, n: int) -> list: # 参数合法性校验 if not 1 <= n <= len(lst): raise ValueError(f"参数n需满足 1 <= n <= {len(lst)}") res = [] # 遍历所有子列表的偏移量生成结果 for i in range(1 - n, len(lst)): start_idx = max(0, i) end_idx = min(len(lst), i + n) res.append(lst[start_idx:end_idx]) return res # 测试调用 lst = [1,2,3,4,5,6,7] n = 3 print(sliding_expand(lst, n))
内容的提问来源于stack exchange,提问作者Ishan Jindal
相关产品推荐
相关产品推荐

