通过阅读Peter Norvig的Solving Every Sudoku Puzzle essay,我遇到了一些以前从未见过的Python习惯用法。
我知道一个函数可以返回一个元组/值列表,在这种情况下,可以为结果分配多个变量,例如
def f():
return 1,2
a, b = f()
但以下每一项的含义是什么?
d2, = values[s] ## values[s] is a string and at this point len(values[s]) is 1
如果len(values[s]) == 1
,那么这个语句与d2 = values[s]
有何不同?
关于在作业中使用下划线的另一个问题是:
_,s = min((len(values[s]), s) for s in squares if len(values[s]) > 1)
下划线是否基本上会丢弃列表中返回的第一个值?
d2, = values[s]
与a,b=f()
类似,只是解包了1个元素元组。a
是元组,b
是整数。_
与其他变量名类似,但通常表示“我不关心这个变量”。第二个问题:它是“价值解包”。当函数返回元组时,可以解包其元素。
Python shell中的u还引用上一个操作的值。因此
逗号表示元组解包。结果是返回值是一个元组,因此它被解包到由逗号分隔的变量中,按元组元素的顺序排列。
相关问题 更多 >
编程相关推荐