You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:27:03