【问题标题】:line, = plot(x,sin(x)) what does comma stand for?line, = plot(x,sin(x)) 逗号代表什么?
【发布时间】:2012-05-02 22:18:32
【问题描述】:

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

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,。没有逗号,代码不起作用。

【问题讨论】:

标签: python numpy matplotlib


【解决方案1】:

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

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

本例用于参数解包:plot返回一个单元素列表,解包成line

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

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

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

尽管z, = 在 Python 代码中更为常见。

【讨论】:

  • 刚刚超过我,+1,但我不同意使用类似列表的语法更易读的方法,我会改用它:line = plot(x, sin(x))[0]
  • 甚至是类似元组的语法:(z) = [4] :)
  • @nightcracker: 使用[0] 进行索引并不等同于解包,因为它不检查plot 的返回值中的元素数量是否与分配给的变量数量相匹配.
  • Raimond Hettinger 关于拆包:twitter.com/#!/raymondh/status/190568767158358017
  • @ovgolovin: (z) = [4]z 设置为列表[4]
【解决方案2】:

案例1:

a=1,
type(a)
tuple

案例2:

a=1
type(a)
int

【讨论】:

    猜你喜欢
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2010-11-26
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多