Underscore _ as variable name in Python
本问题已经有最佳答案,请猛点这里访问。
彼得·诺维格(PeterNorvig)在一篇文章中描述了一个程序,通过结合确定性逻辑运算和对可能的解的智能遍历来解决数独问题,即使是最难的问题。后者是递归完成的;下面是函数(源代码):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def search(values): "Using depth-first search and propagation, try all possible values." if values is False: return False ## Failed earlier if all( len( values[s]) == 1 for s in squares): return values ## Solved! ## Chose the unfilled square s with the fewest possibilities _,s = min( (len( values[s]), s) for s in squares if len(values[s]) > 1 ) return some( search( assign( values.copy(), s, d)) for d in values[s] ) |
(为了我的眼睛,我添加了一些空格、CRS和制表符;向诺维格博士道歉。)
在评论的正下方有一行以"
谢谢你的回答。我猜亚历克斯·马泰利的回答是"增值",他指出,"感兴趣的vbl"成语通常是DSU成语的副作用,而DSU成语本身就被认为是不必要的。
是的,
1 2 3 4 | _,s = min( (len( values[s]), s) for s in squares if len(values[s]) > 1 ) |
你可以编码
1 2 | s = min((s for s in squares if len(values[s])>1), key=lambda s: len(values[s])) |
号
(不确定是什么版本的python peter编写的,但是他使用的习惯用法是"decorate sort undecorate"[[dsu]]的一个例子,除了使用min而不是sort,在今天的python中,
你的解释是正确的。在交互模式中,除了特殊意义之外,
你是对的。在非交互模式下,
offtic:norvig的那篇文章非常好。建议阅读。.