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

Python如何通过for循环生成按3个元素分组的多层嵌套列表

问题解决办法

你的代码没有实现预期分组效果的核心原因是final_list没有在每次外层i循环开始时重置,所有计算得到的子列表都被追加到了同一个全局列表里,最终所有分组都指向同一个全量数据的列表,自然无法得到分层的嵌套结构。

修改后的完整代码如下:

if __name__ == '__main__':
    final_list_2=[]
    with open(infile, "r+b") as tsv_in_file:
        reader = csv.DictReader(codecs.iterdecode(tsv_in_file,'utf-8'), delimiter='\t', fieldnames = FIELDNAMES)
        for item in reader:
            for field in ['boxes']:
                item[field] = np.frombuffer(base64.b64decode(item[field]), dtype=np.float32).reshape((int(item['num_boxes']),-1))
                for i in range(len(item[field])):
                    # 每次i循环开始时初始化新的分组列表,清空上一组的内容
                    final_list=[]
                    for j in range(len(item[field])):
                        in_data = [0]*5
                        in_data[0]=(((item['boxes'][j][0])-(item['boxes'][i][0]))/(item['boxes'][0][2]))
                        in_data[1] = (((item['boxes'][j][1])-(item['boxes'][i][1]))/(item['boxes'][0][3]))
                        in_data[2] = ((item['boxes'][j][2])/(item['boxes'][i][2]))
                        in_data[3] = ((item['boxes'][j][3])/(item['boxes'][i][3]))
                        in_data[4]=(((item['boxes'][j][2])*(item['boxes'][j][3]))/((item['boxes'][i][2])*(item['boxes'][i][3])))
                        final_list.append(in_data)
                    # 每个i循环完成后,将当前i对应的子列表组存入总列表
                    final_list_2.append(final_list)
            break
    print(final_list_2)

如果你的需求是忽略循环维度,把所有生成的子列表统一按每3个为一组切分,可以使用列表切片实现:

# 先把所有计算得到的子列表存入全量列表all_list
final_list_2 = [all_list[i:i+3] for i in range(0, len(all_list), 3)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:57:02