Nop*_*ope 7 python list-comprehension
我正在制作一个2D列表,我想用列表理解来初始化它.我希望它能做到这样的事情:
[[x for i in range(3) if j <= 1: x=1 else x=2] for j in range(3)]
Run Code Online (Sandbox Code Playgroud)
所以它应该返回类似的东西:
[[1,1,1],
[1,1,1],
[2,2,2]]
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
谢谢你的帮助.
Gre*_*ill 14
看起来好像你正在寻找这样的东西:
[[1 if j <= 1 else 2 for i in range(3)] for j in range(3)]
Run Code Online (Sandbox Code Playgroud)
Python 条件表达式与您可能习惯使用的有点不同,如果您来自C或Java之类的东西:
表达式
x if C else y首先评估C(不是x); 如果C为真,则计算x并返回其值; 否则,评估y并返回其值.
做同样事情的稍微短一点的方法是:
[[1 if j <= 1 else 2]*3 for j in range(3)]
Run Code Online (Sandbox Code Playgroud)
Ale*_*lli 14
格雷格的反应是正确的,尽管产生你想要的结果会更简单,更快速地表达
[[j] * 3 for j in (1, 1, 2)]
Run Code Online (Sandbox Code Playgroud)
即,请记住,for不需要range仅适用于;-),列表乘法存在,依此类推;-).