我想知道“行”之后的“”的含义
line, = ax.plot(rand(100), rand(100), 'o', picker=line_picker)
这似乎对代码很重要。 我的代码被压碎了。 错误为“AttributeError:“list”对象没有属性“get_xdata”
from matplotlib import pyplot as plt
import numpy as np
class PointBuilder:
def __init__(self, line):
self.line = line
self.xs = list(line.get_xdata())
self.ys = list(line.get_ydata())
self.cid = line.figure.canvas.mpl_connect('pick_event', self)
def __call__(self, event):
print('click', event)
ind = event.ind[0]
self.xs.remove(self.xs[ind])
self.ys.remove(self.ys[ind])
self.line.set_data(self.xs, self.ys)
self.line.figure.canvas.draw()
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title('click to build line segments')
line = ax.plot(demag_data["X corr"], demag_data['Y corr']*-1, 'o',color='tab:blue', picker=5)
linebuilder = PointBuilder(line)
plt.show()
这可能是确保函数返回一个不可iterable对象或只返回一个元素的可iterable对象的特性。以下是一个例子:
这个很好用。现在考虑下面的例子:
这个fork也很好,但是
a
现在是一个收集所有输出的元组。print(a)
的输出是(1, 2, 3)
。让我们加上逗号:这不起作用,它给出了一个错误:
但当我们改变函数,使其输出单个对象时
或
它又起作用了
此语法的附加功能(在这里很重要)如下所示:如果函数输出一个只有一个元素的列表,则从列表中获取该元素并将其输出。例如:
输出为
[1]
。对于逗号的情况:输出为
1
因此,作者不希望此函数输出包含多个元素的列表,他们希望输出这一个元素本身,而不是作为列表的元素
简介:解包列表:
ax.plot()
返回表示打印数据的Line2D对象的列表那么,在这个命令之后,
在
line
变量中有一个列表(只包含一个元素),但您需要的是这个元素,而不是列表您可以在这个命令之后执行
line = line[0]
,但是line, = ax.plot(...)
更好(更像Pythonic)相关问题 更多 >
编程相关推荐