我理解python中关于逗号运算符的简单概念。例如
x0, sigma = 0, 0.1
表示x0=0,sigma=0.1。但是我得到了一个代码,它有一行如下所示。
y, xe = np.histogram(np.random.normal(x0, sigma, 1000))
其中y和xe的输出如下。
y
Out[10]: array([ 3, 17, 58, 136, 216, 258, 189, 87, 31, 5], dtype=int64)
xe
Out[11]:
array([-0.33771565, -0.27400243, -0.21028922, -0.146576 , -0.08286279,
-0.01914957, 0.04456364, 0.10827686, 0.17199007, 0.23570329,
0.2994165 ])
我不知道怎么读y,xe表达式。我能抬起头来理解它在说什么吗?
逗号形成一个tuple,在Python中,它看起来就像一个不可变的列表。
Python在其他一些语言(如现代JavaScript)中也有解构赋值。简而言之,一个赋值可以将多个左侧变量映射到相同数量的右侧值:
这相当于一次性完成
foo = 1
和bar = 2
。这可用于交换值:您可以在右侧使用元组或列表,如果长度匹配,则以相同的方式将其解包(解构):
您可以从函数返回元组或列表,并立即对结果进行解构:
我希望这能回答你的问题。histogram函数返回一个解包的2元组。
这可能是您的解决方案:
x0, sigma = 0, 0.1
是语法糖。一些事情正在幕后发生:0, 0.1
隐式创建两个元素的元组。x0, sigma =
将元组解压成这两个变量。如果查看^{} 的文档,就会看到它返回以下两个内容:
您的
y, xe = ...
分别解压两个返回数组的元组。这就是为什么将y
分配给numpy int64数组,将xe
分配给numpy float数组的原因。相关问题 更多 >
编程相关推荐