繁体   English   中英

理解python语法

[英]Understanding the python syntax

有人可以帮忙处理下面的代码片段吗?

  1. (e, x), y = d
  2. yhat = atom_count @ w + b
  3. 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_countw+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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM