我正在尝试进行内联均匀分布初始化,但似乎没有找到如何进行的方法(如果可能的话)。
我的工作代码是:
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。
