欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python之列表的append()方法最容易踩的坑

 更新時(shí)間:2022年11月03日 16:25:00   作者:HerrFu  
這篇文章主要介紹了Python之列表的append()方法最容易踩的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python列表的append()方法踩坑

在這之前,我一直認(rèn)為append()只是個(gè)將一個(gè)對(duì)象添加到列表尾部的方法,但是今天之后,我對(duì)它有了一個(gè)新的認(rèn)識(shí)。

一般情況下,我們都是這樣使用:

list = [1,2,3]
list.append(4)
# list列表就變成了[1,2,3,4]

但是在后來的使用中,遇到了像下面這樣的問題:

a = [1,2]
b = []

b.append(a)
print(b)

a.append(3)
print(b)
# 此時(shí)b的結(jié)果為[[1,2,3]]
# 是的,你沒看錯(cuò),就是[[1,2,3]]

?明明兩次打印之間沒有對(duì)b進(jìn)行任何操作,那么b為什么會(huì)發(fā)生變化,問題肯定是出在了append方法上。

通過一系列的資料查詢,發(fā)現(xiàn)append方法是淺拷貝方法,什么是淺拷貝呢?

官方一點(diǎn)的解釋就是:

在Python中,對(duì)象賦值實(shí)際上是對(duì)象的引用,當(dāng)創(chuàng)建一個(gè)對(duì)象,然后把它賦值給另一個(gè)變量的時(shí)候,Python并沒有拷貝這個(gè)對(duì)象,而只是拷貝了這個(gè)對(duì)象的引用,這就是淺拷貝。

什么,你說你還沒懂淺拷貝?沒關(guān)系,下面還有:

a = 1
b = 1

print(id(a))
print(id(b))
# 此時(shí)你會(huì)發(fā)現(xiàn),a和b在內(nèi)存中的地址居然是一樣的

?因?yàn)樵赑ython中,先是生成了對(duì)象,然后才是變量對(duì)對(duì)象的引用。比如,1是一個(gè)對(duì)象,然后a和b再分別對(duì)1進(jìn)行引用,由于常數(shù)是不可變類型,所以1的內(nèi)存空間是一樣的,所以a和b共用一塊內(nèi)存空間。

?形象的來解釋就是:

有一個(gè)盒子,盒子里面放著1,然后a和b對(duì)1進(jìn)行引用的時(shí)候就是直接把a(bǔ)和b的標(biāo)簽貼到這個(gè)盒子上。

回歸正題:

a = [1,2]
b = []

b.append(a)
print(b)

a.append(3)
print(b)
# 開始時(shí)a這個(gè)盒子等于[1,2],b這個(gè)盒子等于[]
# 使用b.append(a)相當(dāng)于將盒子a放入盒子b中
# 所以再使用a.append(3)的時(shí)候,b也會(huì)跟著一起改變呀?。。?/pre>

Python列表的append函數(shù)

append的功能

將一個(gè)元素添加到當(dāng)前列表中

append的用法

用法:list.append(new_item)

參數(shù):new_item:添加進(jìn)列表的新的元素(成員)

In [19]: names = ['insane']
In [20]: names.append('loafer')
In [21]: print(names)
['insane', 'loafer']

append的注意事項(xiàng)

  • 被添加的元素只會(huì)被添加到末尾變量
  • append函數(shù)是在原有列表的基礎(chǔ)上添加,不需要額外添加新的變量

實(shí)戰(zhàn)

每次只能添加一個(gè)變量

# coding:utf-8

books = []
print(id(books))
books.append('python')
print(books)
print(id(books))

number = 1.1
tuple_test = (1,)
dict_test = {'name': 'insane'}

books.append(number)  # 每次只能加入一個(gè)變量
books.append(tuple_test)
books.append(dict_test)
print(books)

books.append('django')
books.append(1)
print(books)
print(id(books))

2029563540224
['python']
2029563540224
['python', 1.1, (1,), {'name': 'insane'}]
['python', 1.1, (1,), {'name': 'insane'}, 'django', 1]
2029563540224

Process finished with exit code 0

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化

    python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化

    在圖像處理中,直方圖是非常重要,也是非常有用的一個(gè)處理要素。這篇文章主要介紹了python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • python如何獲得list或numpy數(shù)組中最大元素對(duì)應(yīng)的索引

    python如何獲得list或numpy數(shù)組中最大元素對(duì)應(yīng)的索引

    這篇文章主要介紹了python如何獲得list或numpy數(shù)組中最大元素對(duì)應(yīng)的索引,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 爬山算法簡介和Python實(shí)現(xiàn)實(shí)例

    爬山算法簡介和Python實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了爬山算法,爬山法(climbing method)是一種優(yōu)化算法,其一般從一個(gè)隨機(jī)的解開始,然后逐步找到一個(gè)最優(yōu)解(局部最優(yōu))然后用Python實(shí)現(xiàn)了這個(gè)算法,需要的朋友可以參考下
    2014-04-04
  • tensorflow中next_batch的具體使用

    tensorflow中next_batch的具體使用

    本篇文章主要介紹了tensorflow中next_batch的具體使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解

    Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解

    這篇文章主要介紹了Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python切片工具pillow用法示例

    Python切片工具pillow用法示例

    這篇文章主要介紹了Python切片工具pillow用法,結(jié)合實(shí)例形式分析了Python中pillow的簡單安裝與使用操作技巧,需要的朋友可以參考下
    2018-03-03
  • Python制作爬蟲采集小說

    Python制作爬蟲采集小說

    本文給大家分享的是使用Python制作爬蟲采集小說的代碼,非常的簡單實(shí)用,雖然還是有點(diǎn)瑕疵,大家一起改改,共同進(jìn)步
    2015-10-10
  • 淺談PySpark SQL 相關(guān)知識(shí)介紹

    淺談PySpark SQL 相關(guān)知識(shí)介紹

    這篇文章主要介紹了淺談PySpark SQL 相關(guān)知識(shí)介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python實(shí)現(xiàn)的登陸Discuz!論壇通用代碼分享

    python實(shí)現(xiàn)的登陸Discuz!論壇通用代碼分享

    這篇文章主要介紹了python實(shí)現(xiàn)的登陸Discuz!論壇通用代碼分享,需要的朋友可以參考下
    2014-07-07
  • 解決Tensorflow安裝成功,但在導(dǎo)入時(shí)報(bào)錯(cuò)的問題

    解決Tensorflow安裝成功,但在導(dǎo)入時(shí)報(bào)錯(cuò)的問題

    今天小編就為大家分享一篇解決Tensorflow安裝成功,但在導(dǎo)入時(shí)報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論