Skip to main content
 首页 » 编程设计

python之用于循环初始化的矩阵(锯齿状数组)

2025年05月04日13del

我正在尝试进行内联均匀分布初始化,但似乎没有找到如何进行的方法(如果可能的话)。

我的工作代码是:

test = [[1,2,3],[4,5,6],[7,8,9]] 
p = [] 
for row in test: 
    prow = [1.0/(len(row)*len(test)) for x in row] 
    p.append(prow) 
print p 
[[0.1111111111111111, 0.1111111111111111, 0.1111111111111111], 
 [0.1111111111111111, 0.1111111111111111, 0.1111111111111111], 
 [0.1111111111111111, 0.1111111111111111, 0.1111111111111111]] 

我的问题是,有没有一种方法可以将“for row in test”缩小为与第二个循环相同的形式并最终只有 1 行?像这样的东西:

p = [1.0/(len(row)*len(test)) for x in row for row in test] 
print p 
[0.1111111111111111, 
 0.1111111111111111, 
 0.1111111111111111, 
 0.1111111111111111, 
 0.1111111111111111, 
 0.1111111111111111, 
 0.1111111111111111, 
 0.1111111111111111, 
 0.1111111111111111] 

但显然是正确的结果。线索?

请您参考如下方法:

我觉得是这样的:

[[1.0/(len(row)*len(test))]*len(row) for row in test] 

如果我正确阅读了您的代码。这里的神奇之处在于,行中的每个元素都有相同的(不可变的)值,您只需创建一个具有正确值的正确长度的列表 [value]*length。