Pregunta

La lectura a través de Peter Norvig Resolver Sudoku Cada ensayo , me he encontrado un par de frases hechas que Python Nunca había visto antes.

Soy consciente de que una función puede devolver una tupla / lista de valores, en cuyo caso se pueden asignar múltiples variables a los resultados, como

def f():
    return 1,2

a, b = f()

Pero lo que es el significado de cada uno de los siguientes?

d2, = values[s]  ## values[s] is a string and at this point len(values[s]) is 1

Si len(values[s]) == 1, entonces, ¿cómo es esta declaración diferente que d2 = values[s]?

Otra pregunta acerca del uso de un guión en la asignación aquí:

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

¿El guión tiene básicamente el efecto de descartar el primer valor devuelto en la lista?

¿Fue útil?

Solución

d2, = values[s] es como a,b=f(), a excepción de desembalaje 1 tuplas de elementos.

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

a es tupla, b es un número entero.

Otros consejos

_ es como cualquier otro nombre de variable pero por lo general significa "no me importa acerca de esta variable".

La segunda pregunta: ¿se trata de "valor de desembalaje". Cuando una función devuelve una tupla, se puede desempaquetar sus elementos.

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

La _ en la cáscara Python también se refiere al valor de la última operación. Por lo tanto

>>> 1
1
>>> _
1

Las comas se refieren a tupla desembalaje. Lo que sucede es que el valor de retorno es una tupla, y así se desempaqueta en las variables separadas por comas, en el orden de los elementos de la tupla.

Puede utilizar la coma final en una tupla de esta manera:

>>> (2,)*2
(2, 2)

>>> (2)*2
4
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top