如何初始化与指定嵌套列表同维度的全零嵌套列表
解决不规则嵌套列表的全0复刻问题
我明白你的问题啦!你遇到的问题其实是因为numpy.zeros_like()是为规则的numpy多维数组设计的,而你的嵌套列表属于「不规则列表(ragged list)」——每个子列表的长度都不一样,numpy没法把这种结构转换成标准的多维数组,所以用这个函数自然会出问题。
那咱们怎么实现和原列表结构完全一致的全0嵌套列表呢?这里有两种简单好用的方法:
方法一:列表推导式(最简洁)
这是Python里处理这类问题最常用的方式,一行代码就能搞定:
A = [[1,2,3,4], [5,6,7], [8,9,10,11,12], [13,14]] B = [[0]*len(sublist) for sublist in A] print(B) # 输出:[[0,0,0,0],[0,0,0],[0,0,0,0,0],[0,0]]
原理很简单:遍历原列表A中的每一个子列表,生成一个长度和该子列表完全相同的全0列表,最后把这些全0子列表组合起来,就得到了和A结构一模一样的B。
方法二:显式循环(适合新手理解)
如果你觉得列表推导式有点抽象,也可以用更直观的循环写法:
A = [[1,2,3,4], [5,6,7], [8,9,10,11,12], [13,14]] B = [] for sublist in A: # 生成和当前子列表长度一致的全0列表 zero_sublist = [0 for _ in sublist] B.append(zero_sublist) print(B) # 输出和上面完全一样
这种写法一步步拆解了过程:先初始化一个空列表B,然后逐个处理A里的子列表,每个子列表对应生成一个全0的子列表,再把它添加到B中,最终得到目标结构。
这两种方法都能完美解决你的需求,而且不需要依赖numpy,完全用Python原生列表操作就能实现~
内容的提问来源于stack exchange,提问作者Silver moon
相关产品推荐
相关产品推荐

