2012-05-02 11 views
12

Estoy tratando de hacer una trama animada. He aquí un ejemplo de código:line, = plot (x, sin (x)) ¿Qué significa coma?

from pylab import * 
import time 

ion() 

tstart = time.time()    # for profiling 
x = arange(0,2*pi,0.01)   # x-array 
line, = plot(x,sin(x)) 
for i in arange(1,200): 
    line.set_ydata(sin(x+i/10.0)) # update the data 
    draw()       # redraw the canvas 

print 'FPS:' , 200/(time.time()-tstart) 

No entiendo la line,. Sin coma, el código no funciona.

+3

posible duplicado de [Un elemento de sintaxis de Python inusual frecuentemente utilizado en Matplotlib] (http://stackoverflow.com/questions/9731779/an-unusual-python-syntax-element-frequently-used-in-matplotlib) –

Respuesta

16

La coma es la sintaxis de Python que denota una tupla de elemento único. Por ejemplo,

>>> tuple([1]) 
(1,) 

En este caso, se utiliza para el argumento de desembalaje: plot devuelve una lista de un solo elemento, que está desempaquetado en line:

>>> x, y = [1, 2] 
>>> x 
1 
>>> y 
2 
>>> z, = [3] 
>>> z 
3 

Una alternativa, tal vez de manera más legible de hacer esto es utilizar como lista de sintaxis:

>>> [z] = [4] 
>>> z 
4 

aunque el z, = es más común en el código Python.

+6

Sólo Me superaron, +1, pero estoy en desacuerdo con que una forma más legible de hacer esto es usar sintaxis similar a una lista, usaría esto en su lugar: 'line = plot (x, sin (x)) [0]'. – orlp

+0

O incluso una sintaxis tipo tupla: '(z) = [4]' :) – ovgolovin

+2

@nightcracker: la indexación con '[0]' no es equivalente a desempaquetar, ya que no verifica si la cantidad de elementos en el el valor de retorno de 'plot' coincide con la cantidad de variables asignadas. –

Cuestiones relacionadas