Matplotlib中经常使用的一个不寻常的Python语法元素
一个附带条件:我问题的核心语法元素是Python语言;但是,该元素经常出现在Matplotlib库中,这是我见过的唯一上下文。所以,无论是一般的Python语法问题还是特定于库的问题,我都不确定。我所知道的是,我在Python语言参考或Matplotlib文档中找不到任何相关内容 使用和/或使用优秀的Python绘图库Matplotlib进行开发的人将认识到下面的语法模式。( 此表达式左侧的结构是什么?以及 使用它的目的是什么? 我熟悉Python的任务解包,例如Matplotlib中经常使用的一个不寻常的Python语法元素,python,syntax,reference,matplotlib,Python,Syntax,Reference,Matplotlib,一个附带条件:我问题的核心语法元素是Python语言;但是,该元素经常出现在Matplotlib库中,这是我见过的唯一上下文。所以,无论是一般的Python语法问题还是特定于库的问题,我都不确定。我所知道的是,我在Python语言参考或Matplotlib文档中找不到任何相关内容 使用和/或使用优秀的Python绘图库Matplotlib进行开发的人将认识到下面的语法模式。( 此表达式左侧的结构是什么?以及 使用它的目的是什么? 我熟悉Python的任务解包,例如 >>> a,
>>> a, b = [100, 200]
我还知道,在Python中,一项元组有时表示为t
这两个都可能是上面第一个问题的答案;如果是这样,那么我还不明白为什么这里只需要调用plot返回的值的第一个元素
(注意:“l”是小写的“ell”;我之所以使用这个字母,是因为ls是这里最常用的字母,可能是因为它绑定到一个以同一个字母开头的对象,请参见下文)
其他一些背景: 调用plot将返回line2D实例列表:
>>> type(l)
<class 'matplotlib.lines.Line2D'>
此表达式更改表示打印窗口内数据值的线的颜色(“打印线”)
下面是另一个示例;它显示了这种“变量逗号”构造的常见场景,即在Matplotlib绘图窗口中嵌入与工具箱/图形后端无关的小部件,例如,要通过复选框打开/关闭,绘图窗口中会出现多个数据系列
在下面的代码中,创建了一个简单的Matplotlib绘图和一个由两个复选框组成的简单小部件,每个数据系列对应一个复选框
l0和l1再次绑定到plot调用;当调用*on_click*时传入的自定义函数中调用了它们的get_visible和set_visible方法时,这两个方法都会在几天后出现
from matplotlib.widgets import CheckButtons
ax = plt.subplot(111)
l0, = ax.plot(s, t, visible=False, lw=2)
l1, = ax.plot(t, s1, lw=2)
rax = plt.axes( [.05, .4, .1, .15] )
check = CheckButtons(rax, ('raw', 'transformed'), (False, True))
def fnx(checkbox_label):
if checkbox_label == 'raw':
l0.set_visible(not l0.get_visible())
elif checkbox_label == 'transformed':
l1.set_visible(not l1.get_visible())
check.on_clicked(fnx)
plt.show()
它是针对单个元素的
>>> l = [3]
>>> v, = l
>>> v
3
与……几乎一样吗
[l] = v
范例
>>> l=[3]
>>> [v] = l
>>> v
3
>>>
一些解释:
我们知道
a,b=1,2
给出a==1,b==2
在我看来,如果python发现左侧是一个“元组”,它会将右侧解包
a,=[1]
python可能认为它是(a,)=[1]
然后尝试解压它,这样我们就得到
a==1
来解释为什么plot
返回一个序列,plot
是根据matlab的plot建模的,所以它接受任意数量的行来用一个函数调用进行绘图。(例如,你可以做plt.plot(x,1*x,x,2*x,x,3*x,x,4*x)
并绘制4行,或在2d数组中传递并为每行获取一行)因此,plot
始终返回一个序列,即使只有一行。实际上,使用plot
一次绘制多行是相当罕见的,因此您经常会看到l,=plt.plot(x,y)
在Matplotlib中经常使用
您可以链接到文档中的示例吗?例如
l, = v
[l] = v
>>> l=[3]
>>> [v] = l
>>> v
3
>>>