当我在Python 3.5上运行此代码时,我得到了
未定义NameError名称“md”。
我已经为md使用了一个星号表达式,所以它会抓住所有 中间价值观。由于它不起作用,我尝试使用已加星标 在函数(drop_first_last)上面的代码中表达式,并且该星号表达式工作正常。
t = [3, 5, 6,8, 2, 9]
first, *middle, last = t
avgg = np.mean(middle)
print('middle is:', middle)
print('avg is:', avgg)
def drop_first_last(t):
frst, *md, lst = t
return np.mean(md)
drop_first_last(t)
print("avg",md)
答案 0 :(得分:1)
md
的范围仅限于drop_first_last
函数内的命名空间,除非您考虑全球化,否则无法在后者之外访问。除此之外,我似乎并不认为print
列表md
本身。我认为你要做的是打印列表元素的平均值。所以,而不是:
drop_first_last(t)
print("avg is: ",md)
做的:
print("avg is: ",drop_first_last(t))
但如果真的在md
函数中定义的drop_first_last
变量之后,那么您可以按如下方式重新定义函数:
def drop_first_last(t):
global md
frst, *md, lst = t
return np.mean(md)
通过这种方式定义函数,您现在可以访问md
变量(list
)。
t = [3, 5, 6, 8, 2, 9]
print(drop_first_last(t))
print(md)
的产率:
#5.25
#[5, 6, 8, 2]
我希望这会有所帮助。