乙個關於zip()函式的神奇發現

2021-08-22 05:02:19 字數 1080 閱讀 5458

今天在看莫煩的pytorch教程的時候,在4種優化器的表現時有一段**沒看懂如下:

losses = [, , , ]

if __name__ == '__main__':

for epoch in range(epoch):

for step,(b_x, b_y) in enumerate(loader):

for net,opt,los in zip(nets,optimizers,losses):

output = net(b_x)

loss = loss_func(output, b_y)

opt.zero_grad()

loss.backward()

opt.step()

labels = ['gsd', 'momentum', 'rmsprop', 'adam']

for i, l_his in enumerate(losses):

plt.plot(l_his,label=labels[i])

plt.legend(loc='best')

plt.xlabel('steps')

plt.ylabel('loss')

plt.show()

a = [1,2,3]

b=[,,]

bout[24]: [[2], [3], [4]]

此時的b已經被替換!

b=[,,]

#################2018-8-22更新###################

上面的情況是我大驚小怪了,昨晚上看到資料裡說了。上面的結果要這樣理解:b我建立的是有四個空元素的空列表,此時b是指向這個列表的物件。當執行for ... zip操作後,j也理解成為指向列表的物件,不過j是指向列表裡面的元素。即j指向的是b物件的內容,所以隨著j的變化,b的元素也會發生變化。就如同下面的例子:

b和a都是指向同乙個列表[1, 2,3]的乙個物件,b的值改變也會引起a的值改變,因為他們指向同乙個列表。

scanf 乙個神奇的函式

scanf函式,與printf函式一樣,都被定義在stdio.h裡,因此在使用scanf函式時要加上 include。它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中,其關鍵字最末乙個字母f即為 格式 format 之意。scanf 格式控制,位址表列 int scanf c...

乙個666的發現

記憶中應該是以前做到過這樣乙個題,關於等邊三角形的然後用matlab畫了一下,當時就震驚了,所以畫了個圖記下來,今天忽然看到這個圖,所以就發上來存著了。描述 線段邊長記為b,在邊長上擷取一段記為a,那麼有以下關係 實際上,他們兩個相差最大不超過0.05。並且假設x a b的話,有0 x 1,當x 0...

乙個小發現

最近在看一些筆試題目,比如說諸如 例一 解答 變換一次就成為為1的只有 2 2 2 變換兩次就成為1的也只有乙個4 4 2 2 2 變換三次就成為1的有兩個數 3 3 1,4 2,2 2 和 8 8 2,4 2,2 2 變換四次就成為1的有三個數6 7 和16 就不一一列了 所以發現這是乙個fib數...