最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

實(shí)例:

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

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

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

輸出:

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

1.2 添加列表、字典

實(shí)例:

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ā)生的同步變化問(wèn)題

2.1列表、字典同步變化

實(shí)例:列表變化

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 運(yùn)行原理

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

實(shí)例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

實(shí)例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的引用地址和原來(lái)相同,意味著如果原本number_list中值發(fā)生變化,則name_list中添加的number_list值同步變化,這在后續(xù)工作中可能出現(xiàn)問(wèn)題。

2.3 解決方案

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

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

1.淺拷貝:拷貝對(duì)象的引用地址

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

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

實(shí)例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])) #查看此時(shí)被添加到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]]

實(shí)例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)過(guò)深度拷貝后的列表字典的地址已經(jīng)改變改變且列表值不隨原列表同步變化。

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

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

實(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()添加字典中元素時(shí),元素的值不顯示。

總結(jié)

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

相關(guān)文章

  • Python中的np.random.seed()隨機(jī)數(shù)種子問(wèn)題及解決方法

    Python中的np.random.seed()隨機(jī)數(shù)種子問(wèn)題及解決方法

    隨機(jī)數(shù)種子,相當(dāng)于我給接下來(lái)需要生成的隨機(jī)數(shù)一個(gè)初值,按照我給的這個(gè)初值,按固定順序生成隨機(jī)數(shù),接下來(lái)通過(guò)本文給大家介紹Python中的np.random.seed()隨機(jī)數(shù)種子問(wèn)題,需要的朋友可以參考下
    2022-04-04
  • python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼

    python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼

    今天小編就為大家分享一篇python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python中dict和set的用法講解

    Python中dict和set的用法講解

    今天小編就為大家分享一篇關(guān)于Python中dict和set的用法講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法詳解

    Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了決策樹(shù)算法的原理及使用sklearn庫(kù)實(shí)現(xiàn)決策樹(shù)的相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Python中線(xiàn)程同步的實(shí)現(xiàn)

    Python中線(xiàn)程同步的實(shí)現(xiàn)

    本文主要介紹了Python中線(xiàn)程同步的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-06-06
  • Python3爬蟲(chóng)中關(guān)于A(yíng)jax分析方法的總結(jié)

    Python3爬蟲(chóng)中關(guān)于A(yíng)jax分析方法的總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲(chóng)中關(guān)于A(yíng)jax分析方法的總結(jié),需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • python遞歸調(diào)用中的坑:打印有值, 返回卻None

    python遞歸調(diào)用中的坑:打印有值, 返回卻None

    這篇文章主要介紹了python遞歸調(diào)用中的坑:打印有值, 返回卻None,本文通過(guò)問(wèn)題分析給出解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python網(wǎng)絡(luò)編程之ftplib模塊

    Python網(wǎng)絡(luò)編程之ftplib模塊

    這篇文章介紹了Python網(wǎng)絡(luò)編程之ftplib模塊,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • python利用google翻譯方法實(shí)例(翻譯字幕文件)

    python利用google翻譯方法實(shí)例(翻譯字幕文件)

    這篇文章主要給大家介紹了關(guān)于python利用google翻譯(翻譯字幕文件)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • NumPy中數(shù)組的轉(zhuǎn)置Transpose的三種方法

    NumPy中數(shù)組的轉(zhuǎn)置Transpose的三種方法

    本文主要介紹了NumPy中數(shù)組轉(zhuǎn)置的基本概念、方法、應(yīng)用場(chǎng)景及注意事項(xiàng),針對(duì)二維與高維數(shù)組,提供了多種轉(zhuǎn)置方法,包括T、transpose、np.transpose,下面就來(lái)詳細(xì)的了解一下
    2026-04-04

最新評(píng)論

西藏| 日照市| 子洲县| 拜城县| 新营市| 婺源县| 社会| 黎川县| 栖霞市| 辽宁省| 公安县| 崇州市| 闽清县| 焦作市| 武川县| 会泽县| 上饶市| 永春县| 南京市| 巴青县| 河源市| 曲靖市| 沭阳县| 广州市| 屯门区| 嘉黎县| 蒙自县| 嘉义市| 石嘴山市| 荔浦县| 平度市| 胶南市| 齐齐哈尔市| 潼南县| 丰都县| 新河县| 垣曲县| 新乐市| 特克斯县| 山阴县| 锦州市|