我正在尝试进行内联统一分布初始化,但似乎没有找到可能的方法。
我的工作代码是:
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 test in row”缩小到第二个循环的相同形式,并仅以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]
但显然是正确的结果。线索?
最佳答案
是的,您正在寻找的是:
In [13]: test = [[1,2,3],[4,5,6],[7,8,9]]
In [14]: p = [[1.0/(len(row)*len(test)) for x in row] for row in test]
In [15]: p
Out[15]:
[[0.1111111111111111, 0.1111111111111111, 0.1111111111111111],
[0.1111111111111111, 0.1111111111111111, 0.1111111111111111],
[0.1111111111111111, 0.1111111111111111, 0.1111111111111111]]
PS:您可能对list comprehension syntax感兴趣