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

如何将Python列表转换为不同长度子列表并按特定方式填充?

按列填充规则生成嵌套列表

给定原列表:

big_list = [1,2,3,4,5,6,7,8]

以及子列表长度要求 [1,2,3,2],需要生成符合以下规则的嵌套列表:

list_of_lists = [[1],[2,5],[3,6,8],[4,7]]

填充规则为:先填充每个子列表的第1个元素,再填充第2个元素,以此类推,直到所有元素分配完毕。

实现思路

核心是按"轮次"分配元素:每一轮对应子列表的第n个位置,遍历所有子列表,只要该子列表的长度要求大于当前轮次(说明它需要这个位置的元素),就从原列表中取元素填充进去。

代码实现

big_list = [1,2,3,4,5,6,7,8]
lengths = [1,2,3,2]

# 初始化空的嵌套列表
list_of_lists = [[] for _ in lengths]
current_pos = 0

# 计算需要填充的总轮次(等于最长子列表的长度)
max_round = max(lengths)

for round_num in range(max_round):
    # 遍历每个子列表,检查是否需要填充当前轮次的元素
    for idx, sub_length in enumerate(lengths):
        if sub_length > round_num:
            list_of_lists[idx].append(big_list[current_pos])
            current_pos += 1

print(list_of_lists)
# 输出结果:[[1], [2, 5], [3, 6, 8], [4, 7]]

逻辑说明

  1. 先根据长度列表初始化对应数量的空列表,作为嵌套列表的框架。
  2. 以最长子列表的长度作为总轮次,每一轮对应子列表的第round_num个元素位置(从0开始计数)。
  3. 每一轮中,对每个子列表判断:如果它的长度要求大于当前轮次,说明这个位置需要填充元素,就从原列表的当前位置取元素添加进去,同时移动原列表的指针。
  4. 循环结束后,所有元素会按规则分配到对应的子列表中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:05:00