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

在q/kdb+中如何按指定分组数量将列表拆分为嵌套列表?

按指定分组长度拆分列表的常规实现方法

下面是Python里处理这类需求的几种常用方案,都是工程场景里的常规写法:

1. 指针+切片(基础直观写法)

用一个起始指针跟踪当前分组的起始位置,遍历分组长度列表,每次截取对应长度的切片后更新指针位置。这种写法逻辑清晰,不需要依赖额外库,新手也能快速理解。

rowsOfDataIndexes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
countOfIndexPairs = [9, 7]

grouped_list = []
current_start = 0
for group_length in countOfIndexPairs:
    current_end = current_start + group_length
    grouped_list.append(rowsOfDataIndexes[current_start:current_end])
    current_start = current_end

print(grouped_list)
# 输出: [[0, 1, 2, 3, 4, 5, 6, 7, 8], [9, 10, 11, 12, 13, 14, 15]]

2. 迭代器+islice(高效写法)

利用迭代器的特性,结合itertools.islice按需截取元素,这种写法在处理超大列表时内存效率更高——不会一次性生成所有切片的副本,而是逐个从迭代器里取对应数量的元素。

from itertools import islice

rowsOfDataIndexes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
countOfIndexPairs = [9, 7]

index_iterator = iter(rowsOfDataIndexes)
grouped_list = [list(islice(index_iterator, length)) for length in countOfIndexPairs]

print(grouped_list)

边界情况说明

如果原列表总长度和分组长度列表的总和不匹配:

  • 两种写法都会自动适配:最后一个分组会取到原列表的末尾(比如原列表只有15个元素,分组长度是[9,8],第二组只会得到7个元素)
  • 若迭代器里无剩余元素,islice会返回空列表,不会触发报错

内容的提问来源于stack exchange,提问作者bashprofile84

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:32:55