mat*_*t b 41 python syntax iterable-unpacking
通过Peter Norvig的解决每一个数独拼图文章,我遇到了一些我以前从未见过的Python习语.
我知道函数可以返回一个元组/值列表,在这种情况下,您可以为结果分配多个变量,例如
def f():
return 1,2
a, b = f()
Run Code Online (Sandbox Code Playgroud)
但是以下各项的含义是什么?
d2, = values[s] ## values[s] is a string and at this point len(values[s]) is 1
Run Code Online (Sandbox Code Playgroud)
如果len(values[s]) == 1,那么这个陈述与此有何不同d2 = values[s]?
关于在作业中使用下划线的另一个问题:
_,s = min((len(values[s]), s) for s in squares if len(values[s]) > 1)
Run Code Online (Sandbox Code Playgroud)
下划线是否具有基本上丢弃列表中返回的第一个值的效果?
edu*_*ffy 37
d2, = values[s]就像a,b=f()解压缩1个元素元组一样.
>>> T=(1,)
>>> a=T
>>> a
(1,)
>>> b,=T
>>> b
1
>>>
Run Code Online (Sandbox Code Playgroud)
a是元组,b是一个整数.
jld*_*ont 17
_ 就像任何其他变量名称,但通常它意味着"我不关心这个变量".
第二个问题:它是"价值拆包".当函数返回元组时,您可以解压缩其元素.
>>> x=("v1", "v2")
>>> a,b = x
>>> print a,b
v1 v2
Run Code Online (Sandbox Code Playgroud)
Python shell中的_也指最后一个操作的值.于是
>>> 1
1
>>> _
1
Run Code Online (Sandbox Code Playgroud)
逗号是指元组解包.会发生的是返回值是一个元组,因此它按照元组元素的顺序解压缩到用逗号分隔的变量中.
| 归档时间: |
|
| 查看次数: |
36848 次 |
| 最近记录: |