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

基于Python List的賦值方法

 更新時間:2018年06月23日 11:39:14   作者:TiRan_Yang  
今天小編就為大家分享一篇基于Python List的賦值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

Python中關(guān)于對象復(fù)制有三種類型的使用方式,賦值、淺拷貝與深拷貝。他們既有區(qū)別又有聯(lián)系,剛好最近碰到這一類的問題,研究下。

一、賦值

在python中,對象的賦值就是簡單的對象引用,這點和C++不同。如下:

a = [1,2,3,"hello",["python","C++"]] 
b = a 
print a==b #True 

這種情況下,b和a是一樣的,他們指向同一片內(nèi)存,b不過是a的別名,是引用。我們可以使用a與b是否相同來判斷,返回True,表明他們地址相同,內(nèi)容相同。

賦值操作(包括對象作為參數(shù)、返回值)不會開辟新的內(nèi)存空間,它只是復(fù)制了新對象的引用。也就是說,除了b這個名字以外,沒有其它的內(nèi)存開銷。

修改了a,就影響了b;同理,修改了b就影響了a。

a = [1,2,3,"hello",["python","C++"]] 
b = a 
b.append("ADD") 
print "a=",a,"b=",b 
#a=[1, 2, 3, 'hello', ['python', 'C++'], 'ADD'] b=[1, 2, 3, 'hello', ['python', 'C++'], 'ADD'] 

二、淺拷貝(shallow copy)

淺拷貝會創(chuàng)建新對象,其內(nèi)容是原對象的引用。

淺拷貝有三種形式:切片操作,工廠函數(shù),copy模塊中的copy函數(shù)。

比如對上述a:

1、切片操作:b = a[:] 或者 b = [each for each in a]

2、工廠函數(shù):b = list(a)

3、copy函數(shù):b = copy.copy(a)

淺拷貝產(chǎn)生的b不再是a了,使用is可以發(fā)現(xiàn)他們不是同一個對象,使用id查看,發(fā)現(xiàn)它們也不指向同一片內(nèi)存。但是當(dāng)我們使用 id(x) for x in a 和 id(x) for x in b 時,可以看到二者包含的元素的地址是相同的。

在這種情況下,a和b是不同的對象,修改b理論上不會影響a。比如b.append([4,5])。

a = [1,2,3,"hello",["python","C++"]] 
b = a[:] 
b.append("ADD") 
print "a",a,"b",b 
#a [1, 2, 3, 'hello', ['python', 'C++']] b [1, 2, 3, 'hello', ['python', 'C++'], 'ADD']

但是要注意,淺拷貝之所以稱為淺拷貝,是它僅僅只拷貝了一層,在a中有一個嵌套的list,如果我們修改了它,情況就不一樣了。

a[4].append("C")。查看b,你將發(fā)現(xiàn)b也發(fā)生了變化。這是因為,你修改了嵌套的list。修改外層元素,會修改它的引用,讓它們指向別的位置,修改嵌套列表中的元素,列表的地址并為發(fā)生變化,指向的都是同一個位置。

三、深拷貝(deep copy)

深拷貝只有一種形式,copy模塊中的deepcopy函數(shù)。

和淺拷貝對應(yīng),深拷貝拷貝了對象的所有元素,包括多層嵌套的元素。因而,它的時間和空間開銷要高。

同樣對la,若使用b = copy.deepcopy(a),再修改b將不會影響到a了。即使嵌套的列表具有更深的層次,也不會產(chǎn)生任何影響,因為深拷貝出來的對象根本就是一個全新的對象,不再與原來的對象有任何關(guān)聯(lián)。

四、關(guān)于拷貝操作的警告

1、對于非容器類型,如數(shù)字,字符,以及其它“原子”類型,沒有拷貝一說。產(chǎn)生的都是原對象的引用。

2、如果元組變量值包含原子類型對象,即使采用了深拷貝,也只能得到淺拷貝。

以上這篇基于Python List的賦值方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中random模塊詳解

    python中random模塊詳解

    Python中的random模塊用于生成隨機數(shù),它提供了很多函數(shù),本文給大家分享常用函數(shù)總結(jié),感興趣的朋友跟隨小編一起看看吧
    2021-03-03
  • 使用Python快速遍歷文件夾下所有文件的方法總結(jié)

    使用Python快速遍歷文件夾下所有文件的方法總結(jié)

    在日常的編程工作中,我們經(jīng)常會遇到需要遍歷文件夾下所有文件的情況,無論是處理大量的數(shù)據(jù)文件、進行文件系統(tǒng)的分析,還是實現(xiàn)復(fù)雜的自動化任務(wù),高效地遍歷文件夾下的所有文件都是一項非常重要的技能,在本文中,我們將深入探討如何使用 Python 快速遍歷文件夾下的所有文件
    2024-11-11
  • Pytorch torch.repeat_interleave()用法示例詳解

    Pytorch torch.repeat_interleave()用法示例詳解

    torch.repeat_interleave() 是 PyTorch 中的一個函數(shù),用于按指定的方式重復(fù)張量中的元素,這篇文章主要介紹了Pytorch torch.repeat_interleave()用法示例詳解,需要的朋友可以參考下
    2024-01-01
  • Python namedtuple命名元組實現(xiàn)過程解析

    Python namedtuple命名元組實現(xiàn)過程解析

    這篇文章主要介紹了Python namedtuple命名元組實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python中的左斜杠、右斜杠(正斜杠和反斜杠)

    Python中的左斜杠、右斜杠(正斜杠和反斜杠)

    這篇文章主要介紹了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • Python?ORM框架之SQLAlchemy?的基礎(chǔ)用法

    Python?ORM框架之SQLAlchemy?的基礎(chǔ)用法

    這篇文章主要介紹了Python?ORM框架之SQLAlchemy?的基礎(chǔ)用法,ORM全稱?Object?Relational?Mapping對象關(guān)系映射,更多詳細內(nèi)容需要的小伙伴課題參考下面文章介紹。希望對你的學(xué)習(xí)有所幫助
    2022-03-03
  • 計算Python Numpy向量之間的歐氏距離實例

    計算Python Numpy向量之間的歐氏距離實例

    這篇文章主要介紹了計算Python Numpy向量之間的歐氏距離實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python openpyxl方法 zip函數(shù)用法及說明

    python openpyxl方法 zip函數(shù)用法及說明

    這篇文章主要介紹了python openpyxl方法 zip函數(shù)用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python調(diào)用攝像頭顯示圖像的實例

    python調(diào)用攝像頭顯示圖像的實例

    今天小編就為大家分享一篇python調(diào)用攝像頭顯示圖像的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • python里使用正則的findall函數(shù)的實例詳解

    python里使用正則的findall函數(shù)的實例詳解

    這篇文章主要介紹了python里使用正則的findall函數(shù)的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10

最新評論

昭苏县| 怀宁县| 隆安县| 张北县| 孟州市| 简阳市| 固安县| 曲沃县| 牡丹江市| 葵青区| 屏南县| 永善县| 抚宁县| 武乡县| 双城市| 尉犁县| 库尔勒市| 噶尔县| 武强县| 东丽区| 石狮市| 太保市| 永和县| 明光市| 洪湖市| 秭归县| 丰顺县| 望江县| 财经| 靖边县| 库尔勒市| 滁州市| 五大连池市| 古丈县| 明水县| 长阳| 黑水县| 区。| 鄢陵县| 东兰县| 石渠县|