2 回答

TA贡献1887条经验 获得超5个赞
这两行是 Python列表推导式的典型示例。
本质上,对于您的第一个列表:
nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)]
这意味着:
取第一对
zip(nabla_b, delta_nabla_b)
;命名它们nb
并dnb
添加它们 (
nb+dnb
)使结果成为新列表的第一个元素
nabla_b
转到第 2 对等的第一步,将结果附加到
nabla_b
,直到所有对zip(nabla_b, delta_nabla_b)
都用完
作为一个简单的例子,下面的列表推导式:
squares = [x**2 for x in range(10)]
print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
等效于以下for循环:
squares = []
for x in range(10):
squares.append(x**2)
print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
有关更多示例和快速介绍,请参见此处。

TA贡献2080条经验 获得超4个赞
该zip函数将两个列表逐个元素地粘在一起,这样如果你给它:
a = [1, 2, 3, 4]
b = ["a", "b", "c", "d"]
zip(a, b) 会返回:
[(1, "a"), (2, "b"), ...]
(每个元素都是一个tuple)
您可以使用元素中每个变量之间的逗号来解包lists 的tuples(或lists)元素tuple:
for elem_a, elem_b in zip(a, b):
print(elem_a, elem_b)
这将打印:
1 a
2 b
3 c
4 d
因此,在您的情况下,它将两个列表nabla_b和delta_nabla_b元素相加,因此您会得到一个列表,其中每个元素都是压缩列表中相应元素的总和。
它可能看起来有点奇怪,因为for循环都在一行上,但这被称为“列表理解”。简单的列表推导读起来像英语。
添加回答
举报