Python代码。 它是逗号运算符吗?
我不明白什么逗号后面的variables行,意思是: http : //matplotlib.org/examples/animation/simple_anim.html
line, = ax.plot(x, np.sin(x))
如果我删除逗号和variables“行”,变成“行”variables,那么程序被破坏。 上面给出的URL的完整代码:
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(111) x = np.arange(0, 2*np.pi, 0.01) # x-array line, = ax.plot(x, np.sin(x)) def animate(i): line.set_ydata(np.sin(x+i/10.0)) # update the data return line, #Init only required for blitting to give a clean slate. def init(): line.set_ydata(np.ma.array(x, mask=True)) return line, ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), init_func=init, interval=25, blit=True) plt.show()
根据http://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequencesvariables后面的逗号似乎与只包含一个元素的元组相关。
ax.plot()
返回一个元素的元组 。 通过在赋值目标列表中添加逗号,可以让Python解开返回值,并依次将其分配给每个左侧命名的variables。
大多数情况下,你会发现这被应用于具有多个返回值的函数:
base, ext = os.path.splitext(filename)
但是,左侧可以包含任意数量的元素,并且提供它是一个元组或variables列表。
在Python中,逗号使逗号成为一个元组:
>>> 1 1 >>> 1, (1,)
圆括号在大多数地方是可选的。 您可以用括号重写原始代码而不改变含义:
(line,) = ax.plot(x, np.sin(x))
或者你也可以使用列表语法:
[line] = ax.plot(x, np.sin(x))
或者,您可以将其重新转换为不使用元组拆包的行:
line = ax.plot(x, np.sin(x))[0]
要么
lines = ax.plot(x, np.sin(x)) def animate(i): lines[0].set_ydata(np.sin(x+i/10.0)) # update the data return lines #Init only required for blitting to give a clean slate. def init(): lines[0].set_ydata(np.ma.array(x, mask=True)) return lines
有关分配如何工作的详细信息,请参阅分配说明文档。
如果你有
x, = y
你打开一个长度为1的列表或元组。 例如
x, = [1]
会导致x == 1
,而
x = [1]
给x == [1]