[英]Understanding the python syntax
有人可以帮忙处理下面的代码片段吗?
(e, x), y = d
yhat = atom_count @ w + b
baseline_val_loss = [0.0 for _ in range(epochs)]
我正在寻找上述三行的口头解释,因为我从未在 shell 脚本中看到过这些语法。 我正在学习的代码是位于https://dmol.pub/applied/QM9.html的一本书的一部分
(1) (e, x), y = d
您在这里所做的基本上是将变量d
的值解包到元组(e, x)
和变量y
。 这仅在d
与左侧的格式相同时才有效。
例如,假设d = ((3, 3), 4)
。 然后:
d = ((3, 3), 4)
(e, x), y = d
print(e) # prints 3
print(x) # prints 3
print(y) # prints 4
更简单的例子是:
a, b = 2, 3
print(a) # prints 2
print(b) # prints 3
(x, y, z) = (10, 20, 30)
print(x) # prints 10
print(y) # prints 20
print(z) # prints 30
唯一的区别是在您的示例中您使用的是元组,因此您需要正确解包所有值。
(2) yhat = atom_count @ w + b
@
运算符是用于矩阵乘法的运算符,在 Python 3.5 中添加。
在这里,您实际上是在声明一个变量yhat
,它等于矩阵atom_count
和w+b
的矩阵乘法。 例如:
import numpy as np
A = np.array([
[1, 2],
[3, 4]
])
B = np.array([
[4, 5],
[6, 7]
])
print(A @ B) # prints [[19 22]
# [43 50]]
(3) baseline_val_loss = [0.0 for _ in range(epochs)]
这称为列表理解。 这是一种初始化列表而不是编写冗长的for
循环的方法。 在这里,您正在初始化一个名为baseline_val_loss
的列表,其中包含大量的epochs
零。
如果您有epochs = 10
,那么您将拥有一个包含 10 个零的 python 列表。 range
函数创建一个从 0 到epochs - 1
的列表。 您可以使用_
作为变量进行迭代,因为您根本不关心当前循环值; 你不会用它做任何事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.