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

Python如何获取嵌套列表中不同长度子列表的对应索引

问题说明

现有命名为my_list的嵌套列表,所有子列表长度互不相同,需要按子列表长度分类,归集每个长度对应的子列表索引。原编写的代码逻辑存在错误,无法输出预期结果:

print([i for i, j in enumerate(my_list) if len([x for x in my_list if len(x) == 1]) in j][0])

原代码的核心问题:

  • 内层列表推导仅统计了长度为1的子列表总数,没有覆盖所有可能的子列表长度
  • 判断条件len(...) in j是将统计出的长度值和子列表j的元素做包含匹配,并非判断子列表自身长度
  • 最终仅截取结果列表的第0个元素,无法输出全部分类结果
可行实现方案

通过一次遍历构建「子列表长度-对应索引」的映射字典即可完成需求,时间复杂度O(n),逻辑清晰运行高效:

length_index_map = {}
for idx, sub_list in enumerate(my_list):
    sub_len = len(sub_list)
    # 首次遇到某长度时,初始化对应的索引存储列表
    if sub_len not in length_index_map:
        length_index_map[sub_len] = []
    length_index_map[sub_len].append(idx)

由于当前场景下所有子列表长度互不相同,字典中每个键对应的列表仅包含一个索引值,直接按键取值即可拿到对应结果。例如要获取长度为2的子列表索引,调用length_index_map[2][0]即可。

如果需要更精简的写法,可以借助标准库collections中的defaultdict省略初始化判断:

from collections import defaultdict

length_index_map = defaultdict(list)
for idx, sub_list in enumerate(my_list):
    length_index_map[len(sub_list)].append(idx)

需要输出全部分类结果时,直接遍历字典即可:

for length, indices in length_index_map.items():
    print(f"长度为{length}的子列表索引:{indices[0]}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:18:33