dyl*_*ert 1 python for-loop if-statement
如果我得到这个代码示例:
for s,d in grid_values(grid).items():
if d in digits and not assign(values, s, d):
return False ## (Fail if we can't assign d to square s.)
return values
Run Code Online (Sandbox Code Playgroud)
我怎么知道结束的地方?因为据我所知,你可以把这一切写成一行.
for循环结束于缩进下降到与for语句相同或更低级别的行.
在你的例子中,那是在return values声明中.
当if语句变为True并return False执行语句时,循环也将终止; 该函数在该点返回'early',并忽略循环的其余部分.
如上所述,您无法将代码减少到一行,因为您无法在一行上组合多个复合语句(带有缩进代码块的语句).您可以any()使用带有生成器表达式的函数调用将其减少为两行,替换该for语句,但我认为它不会提高可读性:
if any(not assign(values, s, d) for s, d in grid_values(grid).items() if d in digits):
return False
return values
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用条件表达式将所有内容填充到一行中,从而破坏可读性:
return False if any(not assign(values, s, d) for s, d in grid_values(grid).items() if d in digits) else values
Run Code Online (Sandbox Code Playgroud)
不要那样做..
| 归档时间: |
|
| 查看次数: |
1512 次 |
| 最近记录: |