Смысл использования запятых и подчеркивания с оператором присваивания Python?

Чтение через Питера НорвигаРешение каждого эссе о головоломке судокуЯ столкнулся с несколькими идиомами 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)

Имеет ли подчеркивание эффект отбрасывания первого значения, возвращенного в списке?

Ответы на вопрос(4)

Ваш ответ на вопрос