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

Python中通过操作生成多个子列表的实现问题

问题描述

我有两个列表A2和Cb_new,运行当前代码后生成的是单个列表,但我需要生成对应结构的多个子列表。

当前代码

A2=[[2, 3, 5], [3, 4, 6]]  

Cb_new=[[1.0, 0.0, 0.0, 0.9979508721068377, 0.0, 0.9961113206802571, 0.0, 0.0, 0.996111320680257, 0.0, 0.0]]
Cb=[]


for j in range(0,len(A2)): 
    for i in range(0,len(A2[j])):  
        Cb1=Cb_new[0][A2[j][i]]
        Cb.append(Cb1)
print(Cb)

当前输出

[0.0, 0.9979508721068377, 0.9961113206802571, 0.9979508721068377, 0.0, 0.0]

期望输出

[[0.0, 0.9979508721068377, 0.9961113206802571], [0.9979508721068377, 0.0, 0.0]]
解决方案

问题出在你直接把所有元素都追加到了同一个大列表里,没有为A2的每个子列表创建对应的子列表。修改方法很简单:每次循环A2的子列表时,先初始化一个临时子列表,把当前子列表对应的元素都加到这个临时列表里,再把临时列表追加到Cb中。

修改后的代码:

A2=[[2, 3, 5], [3, 4, 6]]  

Cb_new=[[1.0, 0.0, 0.0, 0.9979508721068377, 0.0, 0.9961113206802571, 0.0, 0.0, 0.996111320680257, 0.0, 0.0]]
Cb=[]

for j in range(len(A2)): 
    # 每次循环A2的子列表时,创建一个临时子列表
    sub_list = []
    for i in range(len(A2[j])):  
        Cb1=Cb_new[0][A2[j][i]]
        sub_list.append(Cb1)
    # 把临时子列表追加到Cb中
    Cb.append(sub_list)
print(Cb)

你也可以用更简洁的列表推导式实现:

A2=[[2, 3, 5], [3, 4, 6]]  
Cb_new=[[1.0, 0.0, 0.0, 0.9979508721068377, 0.0, 0.9961113206802571, 0.0, 0.0, 0.996111320680257, 0.0, 0.0]]

Cb = [[Cb_new[0][idx] for idx in sub] for sub in A2]
print(Cb)

运行以上代码就能得到你想要的嵌套列表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:57:28