line,= plot(x,sin(x))逗号代表什么?

ene*_*ene 12 python numpy matplotlib

我正在尝试制作一个动画情节.这是一个示例代码:

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)
Run Code Online (Sandbox Code Playgroud)

我不明白line,.没有逗号,代码不起作用.

Fre*_*Foo 16

逗号是Python语法,表示单元素元组.例如,

>>> tuple([1])
(1,)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它用于参数解包:plot返回单元素列表,将其解压缩到line:

>>> x, y = [1, 2]
>>> x
1
>>> y
2
>>> z, = [3]
>>> z
3
Run Code Online (Sandbox Code Playgroud)

另一种可能更易读的方法是使用类似列表的语法:

>>> [z] = [4]
>>> z
4
Run Code Online (Sandbox Code Playgroud)

虽然z, =在Python代码中更常见.

  • 刚刚超过我,+1,但我不同意这样做更可读的方法是使用类似列表的语法,我会用它来代替:`line = plot(x,sin(x))[0]`. (6认同)
  • @nightcracker:使用`[0]`进行索引并不等同于解包,因为它不会检查`plot`的返回值中的元素数是否与赋给的变量数相匹配. (2认同)
  • @ovgolovin:`(z)= [4]`将`z`设置为列表`[4]`. (2认同)