为了账号安全,请及时绑定邮箱和手机立即绑定

下划线_作为Python中的变量名

下划线_作为Python中的变量名

子衿沉夜 2019-11-27 14:26:25
这是该函数(source):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]            )(为方便起见,我添加了一些空格,CR和制表符;对Norvig博士表示歉意。)在评论的正下方,有一行以“ _,s” 开头。那似乎是len(values[s]),s最小值为的解压元组()s。Norvig博士是否使用“ _”作为变量名只是为了表明它是“无关”结果,还是其他情况?有时_建议使用“ ”作为变量名吗?在交互模式下,“ _”保留上一个操作的答案;非交互式代码中有类似的功能吗?更新资料感谢您的好答案。我猜答案是Alex Martelli的“增值”;他指出,“ _,vbl_of_interest”惯用语通常是DSU惯用语的副作用,而DSU惯用语本身已被不必要。
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

_是的,是“无关紧要”的传统名称(很遗憾,它与I18N中的用法冲突,但这是一个单独的问题;-)。顺便说一句,在当今的Python中,代替:


_,s = min( (len( values[s]), s) 

            for s in squares 

            if len(values[s]) > 1

        )

你可能会编码


s = min((s for s in squares if len(values[s])>1), 

        key=lambda s: len(values[s]))

(不确定使用哪种版本的Peter Peter写的Python,但他使用的惯用语是“ decorate-sort-undecorate” [[DSU]]的示例,但用min代替了sort,而在当今的Python中,key=可选参数通常是制作DSU的最佳方法;-)。


查看完整回答
反对 回复 2019-11-27
?
湖上湖

TA贡献2003条经验 获得超2个赞

我正在尝试将递归放进去,以便可以在希望的时候将其删除-我的头还没有学会如何使用递归而不是用循环来做。我的数独求解器中有大量代码,这些“简单”递归def可以使一切消失!Norvig博士选择在他的求解器中使用字符串操作,而不是设置操作。具有讽刺意味的是,在解决数独问题之前,我使用了字符串操作来解决一些平铺难题,因此我为数独使用了列表“ n”组,仅用于体验。

查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 913 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号