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)
這將打?。?/p>
1 a
2 b
3 c
4 d
因此,在您的情況下,它將兩個列表nabla_b和delta_nabla_b元素相加,因此您會得到一個列表,其中每個元素都是壓縮列表中相應元素的總和。
它可能看起來有點奇怪,因為for循環都在一行上,但這被稱為“列表理解”。簡單的列表推導讀起來像英語。
添加回答
舉報