Python:如何向二级列表的每个子列表开头插入元素?
问题分析与解决
你的代码逻辑单次执行时是正确的,但当前出现的重复插入序号的问题,核心原因是这段循环代码被重复执行了多轮——每次执行都会给每个子列表开头再插一个序号,反复多次后就会积累一串杂乱的数字前缀。
比如第一次执行循环,子列表会变成[1, 0.0, 0.0, 0.0];第二次执行,又会在开头插入新的序号,变成[1, 1, 0.0, 0.0, 0.0];多次执行后就会出现你看到的多序号前缀的结果。
正确实现方式
方式一:创建新列表(推荐,避免误修改原数据)
通过列表推导式生成带序号的新列表,完全不改动原列表:
numbered_nodes = [[i+1] + sublist for i, sublist in enumerate(additional_nodes)] print(numbered_nodes)
方式二:直接修改原列表(需确保代码只执行一次)
用enumerate简化循环逻辑,同时必须保证这段代码只运行一轮:
for idx, sublist in enumerate(additional_nodes, start=1): sublist.insert(0, idx) print(additional_nodes)
验证方法
执行前先打印原列表的结构,确认每个子列表初始只有3个元素;执行后检查,每个子列表长度应为4(1个序号+3个float元素)。如果长度超过4,就说明代码被重复执行了。
内容的提问来源于stack exchange,提问作者Владислав Петрушин
相关产品推荐
相关产品推荐

