亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中內(nèi)置函數(shù)append()、extend()的用法及區(qū)別詳解

 更新時間:2025年03月13日 10:01:50   作者:萬里春風  
這篇文章主要介紹了Python中內(nèi)置函數(shù)append()、extend()的用法及區(qū)別,還探討了append()函數(shù)添加列表時發(fā)生的同步變化問題,并提供了解決方案,需要的朋友可以參考下

1.append()函數(shù)的基本用法

append()函數(shù)可以在列表末尾添加任意類型的元素

1.1 添加整數(shù)、浮點數(shù)、字符串

實例:

list1 = [1, 2]
list1.append(0) #添加整數(shù)類型
print('list1=', list1)

list2 = [1, 2]
list2.append(1.23) #添加浮點數(shù)類型
print('list2=', list2)

list3 = [1, 2]
list3.append('everything') #添加字符串類型
print('list3=', list3)

輸出:

list1= [1, 2, 0]
list2= [1, 2, 1.23]
list3= [1, 2, 'everything']

1.2 添加列表、字典

實例:

list1 = [1, 2]
a = [1, 2, 3] #列表
list1.append(a)
print('list1=', list1)

list2 = [1, 2]
b = {'小明': 1, '小虎': 2} #字典
list2.append(b)
print('list2=', list2)

輸出:

list1= [1, 2, [1, 2, 3]]
list2= [1, 2, {'小明': 1, '小虎': 2}]

2.添加列表發(fā)生的同步變化問題

2.1列表、字典同步變化

實例:列表變化

name_list = ['sam', 'dean']
number_list = [1, 2, 3]
name_list.append(number_list)
print(number_list)
print(name_list)

a = 4
number_list.append(a)
print(number_list)
print(name_list)

輸出:

[1, 2, 3]
['sam', 'dean', [1, 2, 3]]
[1, 2, 3, 4]
['sam', 'dean', [1, 2, 3, 4]] #結(jié)果中的number_list同步變化

2.2 運行原理

為什么已經(jīng)被添加的列表或字典發(fā)生變化時,結(jié)果中的列表或字典也同步變化,這是由于append()函數(shù)的工作原理是直接調(diào)用元素的地址。

實例1:列表變化

name_list = ['sam', 'dean']
number_list = [1, 2, 3]
name_list.append(number_list)

print(id(number_list)) #number_list的引用地址
print(id(name_list[2]))  #添加后的引用地址

輸出:

2926810333248
2926810333248

實例2:字典變化

name_list = ['sam', 'dean']
number_list = {'a': 1, 'b': 2, }
name_list.append(number_list)
print(name_list)

print(id(name_list[2]))
print(id(number_list))

number_list['a'] = 3
print(number_list)
print(name_list)

輸出:

['sam', 'dean', {'a': 1, 'b': 2}]
1986756347904
1986756347904
{'a': 3, 'b': 2}
['sam', 'dean', {'a': 3, 'b': 2}]

可以看出,添加后number_list的引用地址和原來相同,意味著如果原本number_list中值發(fā)生變化,則name_list中添加的number_list值同步變化,這在后續(xù)工作中可能出現(xiàn)問題。

2.3 解決方案

我們可以將append()函數(shù)引用地址的功能改成引用內(nèi)容,這需要用到copy()函數(shù)。

這里要提到拷貝的兩種概念:

1.淺拷貝:拷貝對象的引用地址

2.深拷貝:拷貝對象的內(nèi)容

而copy()函數(shù)中的copy.deepcopy()可以直接拷貝列表的內(nèi)容,這樣就可以保證添加的列表值不發(fā)生改變。

實例1:列表

import copy
name_list = ['sam', 'dean']
number_list = [1, 2, 3]
name_list.append(copy.deepcopy(number_list)) #直接拷貝number_list的內(nèi)容
print(number_list)
print(name_list)

print(id(number_list))
print(id(name_list[2])) #查看此時被添加到name_list中number_list的地址

a = 4
number_list.append(a)
print(number_list)
print(name_list)

輸出:

[1, 2, 3]
['sam', 'dean', [1, 2, 3]]
2182206779456
2182206779392
[1, 2, 3, 4]
['sam', 'dean', [1, 2, 3]]

實例2:字典

import copy
name_list = ['sam', 'dean']
number_list = {'a': 1, 'b': 2, }
name_list.append(copy.deepcopy(number_list))
print(name_list)

print(id(name_list[2]))
print(id(number_list))

number_list['a'] = 3
print(number_list)
print(name_list)

輸出:

['sam', 'dean', {'a': 1, 'b': 2}]
2607266300864
2607266269184
{'a': 3, 'b': 2}
['sam', 'dean', {'a': 1, 'b': 2}]

可以看到,經(jīng)過深度拷貝后的列表字典的地址已經(jīng)改變改變且列表值不隨原列表同步變化。

3. extend()函數(shù)的基本用法

extend()函數(shù)也是添加元素,但與append()函數(shù)的區(qū)別在于,當添加列表或字典時,extend()函數(shù)直接添加列表或字典中的元素,而append()函數(shù)則是將列表或字典當作一個元素直接添加。

實例:

list1 = [1, 2]
a = [1, 2, 3]
list1.extend(a)
print(list1)

list2 = ['sam', 'dean']
b = {'dd': 1, 'mm': 2}
list2.extend(b)
print(list2)

輸出:

?[1, 2, 1, 2, 3]
['sam', 'dean', 'dd', 'mm'] #字典中的元素值不顯示

需要注意,利用attend()添加字典中元素時,元素的值不顯示。

總結(jié)

到此這篇關(guān)于Python中內(nèi)置函數(shù)append()、extend()的用法及區(qū)別的文章就介紹到這了,更多相關(guān)Python內(nèi)置函數(shù)append()、extend()用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Pytest測試用例的執(zhí)行方法

    詳解Pytest測試用例的執(zhí)行方法

    大家應(yīng)該都知道pytest是一個非常成熟的全功能的Python測試框架,接下來通過本文給大家分享Pytest測試用例的執(zhí)行方法,感興趣的朋友一起看看吧
    2021-05-05
  • Python定時發(fā)送消息的腳本:每天跟你女朋友說晚安

    Python定時發(fā)送消息的腳本:每天跟你女朋友說晚安

    今天小編就為大家分享一篇關(guān)于Python定時發(fā)送消息的腳本:每天跟你女朋友說晚安的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python實現(xiàn)圣誕樹的多種方法

    Python實現(xiàn)圣誕樹的多種方法

    這篇文章主要為大家介紹了Python實現(xiàn)圣誕樹的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python利用shutil模塊實現(xiàn)文件夾的復制刪除與裁剪

    Python利用shutil模塊實現(xiàn)文件夾的復制刪除與裁剪

    shutil模塊是對os模塊的補充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作。本文將利用shutil模塊實現(xiàn)文件夾的復制刪除與裁剪,需要的可以參考一下
    2022-05-05
  • TensorFlow實現(xiàn)打印每一層的輸出

    TensorFlow實現(xiàn)打印每一層的輸出

    今天小編就為大家分享一篇TensorFlow實現(xiàn)打印每一層的輸出,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 跟老齊學Python之編寫類之二方法

    跟老齊學Python之編寫類之二方法

    上一講中創(chuàng)建了類,并且重點講述了構(gòu)造函數(shù)以及類實例,特別是對那個self,描述了不少。在講述構(gòu)造函數(shù)的時候特別提到,init()是一個函數(shù),只不過在類中有一點特殊的作用罷了,每個類,首先要運行它,它規(guī)定了類的基本結(jié)構(gòu)。
    2014-10-10
  • 利用Python-iGraph如何繪制貼吧/微博的好友關(guān)系圖詳解

    利用Python-iGraph如何繪制貼吧/微博的好友關(guān)系圖詳解

    這篇文章主要給大家介紹了關(guān)于利用Python-iGraph如何繪制貼吧/微博好友關(guān)系圖的相關(guān)資料,文中顯示介紹了在windows系統(tǒng)下安裝python-igraph的步驟,然后通過示例代碼演示了繪制好友關(guān)系圖的方法,需要的朋友可以參考下。
    2017-11-11
  • python操作日志的封裝方法(兩種方法)

    python操作日志的封裝方法(兩種方法)

    這篇文章主要介紹了python操作日志的封裝方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • Python 鍵盤事件詳解

    Python 鍵盤事件詳解

    這篇文章主要為大家詳細介紹了Python的 鍵盤事件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Django?CSRF驗證失敗請求被中斷的問題

    Django?CSRF驗證失敗請求被中斷的問題

    這篇文章主要介紹了Django?CSRF驗證失敗請求被中斷的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論