2012-05-02 11 views
12

私はアニメーションプロットを作ろうとしています。ここでは例のコードは次のとおりです。line、= plot(x、sin(x))コンマは何を表していますか?

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) 

私はline,を理解していません。カンマなしでは、コードは機能しません。

+3

[Matplotlibで頻繁に使用されるPythonの珍しい構文要素]の複製(http://stackoverflow.com/questions/9731779/an-unusual-python-syntax-element-frequently-used-in-matplotlib) –

答えて

16

カンマは、単一要素のタプルを示すPython構文です。例えば、この場合、

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

は、引数アンパックのために使用されます。

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

代替、やっておそらくもっと読みやすい方法:lineに展開された単一の要素のリストを返しますplotz, =は、Pythonコードでより一般的ですが、

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

:これは、リストのような構文を使用することです。

+6

ちょうどoutsped me、+1、しかし、私はこれを行うより読みやすい方法がリストのような構文を使用しているとは思っていないので、代わりにこれを使います: 'line = plot(x、sin(x))[0]'。 – orlp

+0

またはタプルのような構文: '(z)= [4]' :) – ovgolovin

+2

@ nightcracker: '[0]'によるインデックス付けは、アンパックと同じではありません。 'plot'の戻り値は割り当てられている変数の数に一致します。 –