在Python赋值运算符中使用逗号和下划线的意义?

2024-05-18 12:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

通过阅读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)

下划线是否基本上会丢弃列表中返回的第一个值?


Tags: 函数列表lenispeterd2元组values
3条回答

d2, = values[s]a,b=f()类似,只是解包了1个元素元组。

>>> T=(1,)
>>> a=T
>>> a
(1,)
>>> b,=T
>>> b
1
>>> 

a是元组,b是整数。

_与其他变量名类似,但通常表示“我不关心这个变量”。

第二个问题:它是“价值解包”。当函数返回元组时,可以解包其元素。

>>> x=("v1", "v2")
>>> a,b = x
>>> print a,b
v1 v2

Python shell中的u还引用上一个操作的值。因此

>>> 1
1
>>> _
1

逗号表示元组解包。结果是返回值是一个元组,因此它被解包到由逗号分隔的变量中,按元组元素的顺序排列。

相关问题 更多 >

    热门问题