昨天,同實驗室的善良可愛又nice的小姐姐coding的時候遇到了一個令人意想不到的bug(也可能是我們資歷太淺),主題就是python中的append()函數, 所以就把這個令人抓狂的過程記錄下來,按需自取,用師弟的話來說就是 “戰勝恐懼,微笑面對”。
我們先來看一下append() 的基本操作:就是在list中添加元素或者一個新的list。
那麼舉一反三,我們想在元素爲list的list裏append新的list,就是:
然後我們今天的重點來了,鏘鏘鏘鏘! 我們想在元素爲list的list裏面append的是某一list的元素(好吧,我知道這句話很繞口,但是還是很好理解的),常規操作是:
如果將long[i]
定義爲一箇中間變量,發現輸出的結果就不對了:
我們把i, x, long[i]
print出來,可以發現每次的x是一個固定值,都是50,而long[i]每次都是在變化的,所以我們中間變量x實際上是一個固定值,因此我們a在append以後都是50,而不是long[i]的值。
我們可以用一個簡單的小例子來解釋一下Python的這種數據的特性,例子如下。【我們可以將這種對於變量賦值的過程理解爲指針,用例子來說明,變量a指向的是常數3,表面上看變量b指向的變量a,實際上變量b指向的是變量a指向的常數3,所以,我們在更改變量a的指向爲常數5時,變量b的指向常數並沒有變化,所以b的值還是3】
在我們研究append()的過程中呢,我們還發現了一些有趣的事情(大概也是個未來的bug吧),寫在這裏也和大家分享一下我們的莫名的快(喪)樂(心)源(病)泉(狂)。
(1)python.append()函數和python.extend()函數的區別:
python.append()函數是將新的東西添加進去,可以是元素,可以是列表,但是python.extend()函數是將新的列表中的元素添加進去,所以在輸出上還是有很大區別的,完全是兩個不同的列表。
(2)python.append()函數不要等於!!!
這個就是append()函數的語法和寫法的問題了,直接append()就可以啦~