函数内的 Python 星号表达式不起作用

标签 python list

当我在 Python 3.5 上运行此代码时,我得到

名称错误名称“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)

最佳答案

md 的范围仅限于 drop_first_last 函数内部的命名空间,并且无法在后者之外访问,除非您考虑将其全局化 。除此之外,在我看来,您并不希望 print 列表 md 本身。我认为您想要做的是打印列表元素的平均值。所以,而不是:

drop_first_last(t)
print("avg is: ",md)

做:

print("avg is: ",drop_first_last(t))

但是,如果您确实drop_first_last 函数内定义的 md 变量之后,那么您可以按如下方式重新定义函数:

def drop_first_last(t):
  global md
  frst, *md, lst = t
  return  np.mean(md)

通过以这种方式定义的函数,您现在可以访问 md 变量(这是一个列表)。

t = [3, 5, 6, 8, 2, 9]
print(drop_first_last(t))
print(md)

产量:

#5.25
#[5, 6, 8, 2]

我希望这会有所帮助。

关于函数内的 Python 星号表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40478289/

相关文章:

python - 如何获取列表的所有组合,其中两个相邻的元素可以成为一个元素

python - 使用 python 在文件列表中查找正确的中间证书类型

python - 如何将鼠标点击信号连接到 pyqtgraph 绘图小部件

Python Google Drive API - 获取我的云端硬盘文件夹的 ID

python - 在机器学习和深度学习项目中进行分析之前,我是否应该重新组合训练集和测试集?

python : Splitting multidimensional lists

python比较两个列表之间的差异

python - 在哪里可以找到 Python3 中的 WidgetRedirector?

html - 使 HTML 水平列表不易损坏

list - 首先: contract violation error in racket/scheme for printing out a combination of list procedures