Python中根据另一列表更新列表:实现空元素处插入0
问题解决:根据CB列表更新J列表
问题分析
需根据CB列表的元素更新J列表:当CB[i]为空列表时,在J的对应位置插入0;否则保留J[0][i]的原始值。原始代码的问题在于过滤掉了CB为空的位置,导致输出缺少对应的0。
修正后的代码
import numpy as np J=[[1, 2, 4, 6, 7, 9, 10]] CB=[[], [np.array([0.00351331]), np.array([0.0070412]), np.array([0.00352908])], [], [np.array([0.01067821])], [np.array([0.01070989])], [np.array([0.01067821])], [np.array([0.01070989])]] # 遍历CB的每个元素,为空则替换为0,否则取J对应位置的值 J = [J[0][i] if len(a) != 0 else 0 for i, a in enumerate(CB)] print(J)
代码解释
- 原始代码使用
if np.array(a).size !=0作为过滤条件,只保留CB非空的位置,导致输出丢失了需要插入0的位置。 - 修正后的逻辑遍历所有CB元素:
- 若当前CB元素长度不为0(即非空),则取J[0]对应索引的值;
- 若当前CB元素为空列表,则插入0。
- 使用
len(a)判断CB元素是否为空比转换为numpy数组更直接高效,因为CB的元素本身就是列表类型。
输出结果
运行修正后的代码,输出为:
[0, 2, 0, 6, 7, 9, 10]
内容的提问来源于stack exchange,提问作者isaacmodi123
相关产品推荐
相关产品推荐

