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

python中l(wèi)ist列表復(fù)制的幾種方法(賦值、切片、copy(),deepcopy())

 更新時(shí)間:2022年08月19日 16:08:20   作者:程序遇上智能星空  
本文主要介紹了python中l(wèi)ist列表復(fù)制的幾種方法(賦值、切片、copy(),deepcopy()),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、淺拷貝和深拷貝

淺拷貝復(fù)制指向某個(gè)對(duì)象的地址(指針),而不復(fù)制對(duì)象本身,新對(duì)象和原對(duì)象共享同一內(nèi)存。

深拷貝會(huì)額外創(chuàng)建一個(gè)新的對(duì)象,新對(duì)象跟原對(duì)象并不共享內(nèi)存,修改新對(duì)象不會(huì)影響到原對(duì)象。

賦值其實(shí)就是引用了原對(duì)象。兩者指向同一內(nèi)存,兩個(gè)對(duì)象是聯(lián)動(dòng)的,無論哪個(gè)對(duì)象發(fā)生改變都會(huì)影響到另一個(gè)。

2、直接賦值

使用=來復(fù)制一個(gè)列表,實(shí)際上不僅復(fù)制了其中的內(nèi)容,也復(fù)制了其內(nèi)存地址,即引用了原列表。使用id()方法查看內(nèi)存地址也是一樣的。修改其中一個(gè)列表,也會(huì)直接更改另一個(gè)列表。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
if __name__ == '__main__':
    a = ["a", ["b", "c", "d"], ["e", "f"]]
    # 直接復(fù)制,即引用列表
    b = a
    print(a)
    print(b)
    # 通過id()查看內(nèi)存地址,為一樣的
    print(id(a), id(b))
    b[0] = "g"
    b[1][0] = "f"
    print(a)
    print(b)

輸出:

['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['b', 'c', 'd'], ['e', 'f']]
2030264836936 2030264836936
['g', ['f', 'c', 'd'], ['e', 'f']]
['g', ['f', 'c', 'd'], ['e', 'f']]
 
Process finished with exit code 0

3、for循環(huán)

使用for循環(huán)進(jìn)行拷貝,僅第一層為深拷貝,對(duì)其它層依然是淺拷貝。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
if __name__ == '__main__':
    a = ["a", ["b", "c", "d"], ["e", "f"]]
    b = []
    # 使用for循環(huán)進(jìn)行拷貝,僅第一層為深拷貝
    for i in a:
        b.append(i)
    print(a)
    print(b)
    b[0] = "g"
    b[1][0] = "f"
    print(a)
    print(b)

輸出:

['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['f', 'c', 'd'], ['e', 'f']]
['g', ['f', 'c', 'd'], ['e', 'f']]
 
Process finished with exit code 0

4、切片

使用切片方法進(jìn)行拷貝,也僅對(duì)第一層為深拷貝,對(duì)其它層依然是淺拷貝。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
if __name__ == '__main__':
    a = ["a", ["b", "c", "d"], ["e", "f"]]
    # 使用切片進(jìn)行拷貝,僅第一層為深拷貝
    b = a[:]
    print(a)
    print(b)
    b[0] = "g"
    b[1][0] = "f"
    print(a)
    print(b)

輸出:

['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['f', 'c', 'd'], ['e', 'f']]
['g', ['f', 'c', 'd'], ['e', 'f']]
 
Process finished with exit code 0

5、copy()方法

(1)list.copy()方法

使用list.copy()方法進(jìn)行拷貝,也僅對(duì)第一層為深拷貝,對(duì)其它層依然是淺拷貝。由于列表中嵌套的列表實(shí)際保存的是地址,依然指向同一個(gè)內(nèi)存地址。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
if __name__ == '__main__':
    a = ["a", ["b", "c", "d"], ["e", "f"]]
    # 使用list.copy()方法進(jìn)行拷貝,僅第一層為深拷貝
    b = a.copy()
    print(a)
    print(b)
    b[0] = "g"
    b[1][0] = "f"
    print(a)
    print(b)

輸出:

['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['f', 'c', 'd'], ['e', 'f']]
['g', ['f', 'c', 'd'], ['e', 'f']]
 
Process finished with exit code 0

(2)copy.copy()方法

使用copy.copy()方法進(jìn)行拷貝,也僅對(duì)第一層為深拷貝,對(duì)其它層依然是淺拷貝。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import copy
 
if __name__ == '__main__':
    a = ["a", ["b", "c", "d"], ["e", "f"]]
    # 使用copy.copy()方法進(jìn)行拷貝,僅第一層為深拷貝
    b = copy.copy(a)
    print(a)
    print(b)
    b[0] = "g"
    b[1][0] = "f"
    print(a)
    print(b)

輸出:

['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['f', 'c', 'd'], ['e', 'f']]
['g', ['f', 'c', 'd'], ['e', 'f']]
 
Process finished with exit code 0

6、deepcopy()方法

使用copy.deepcopy()方法進(jìn)行拷貝,對(duì)所有層均為深拷貝,改變新列表并不會(huì)影響到原列表,推薦使用。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import copy
 
if __name__ == '__main__':
    a = ["a", ["b", "c", "d"], ["e", "f"]]
    # 使用copy.deepcopy()方法進(jìn)行拷貝,對(duì)所有層均為深拷貝
    b = copy.deepcopy(a)
    print(a)
    print(b)
    b[0] = "g"
    b[1][0] = "f"
    print(a)
    print(b)

輸出:

['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['b', 'c', 'd'], ['e', 'f']]
['a', ['b', 'c', 'd'], ['e', 'f']]
['g', ['f', 'c', 'd'], ['e', 'f']]
 
Process finished with exit code 0

到此這篇關(guān)于python中l(wèi)ist列表復(fù)制的幾種方法(賦值、切片、copy(),deepcopy())的文章就介紹到這了,更多相關(guān)python list列表復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python編程普通及類和靜態(tài)方法示例詳解

    python編程普通及類和靜態(tài)方法示例詳解

    普通方法會(huì)將實(shí)例傳入方法當(dāng)中(通常用self表示),類方法會(huì)將類傳入方法當(dāng)中(通常用cls表示),靜態(tài)方法中傳入與類無關(guān)的變量。下面將舉例詳細(xì)說明
    2021-10-10
  • python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對(duì)應(yīng)相加方法

    python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對(duì)應(yīng)相加方法

    今天小編就為大家分享一篇python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對(duì)應(yīng)相加方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python中連接字符串的7種方法小結(jié)

    Python中連接字符串的7種方法小結(jié)

    Python?提供了將一個(gè)或多個(gè)字符串連接在一起的多種方法,本文主要介紹了Python中連接字符串的7種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • mac下pycharm設(shè)置python版本的圖文教程

    mac下pycharm設(shè)置python版本的圖文教程

    今天小編就為大家分享一篇mac下pycharm設(shè)置python版本的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 解決windows上安裝tensorflow時(shí)報(bào)錯(cuò),“DLL load failed: 找不到指定的模塊”的問題

    解決windows上安裝tensorflow時(shí)報(bào)錯(cuò),“DLL load failed: 找不到指定的模塊”的問題

    這篇文章主要介紹了解決windows上安裝tensorflow時(shí)報(bào)錯(cuò),“DLL load failed: 找不到指定的模塊”的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python性能分析工具pyinstrument提高代碼效率

    Python性能分析工具pyinstrument提高代碼效率

    今天分享一個(gè)超級(jí)實(shí)用的 Python 性能分析工具 pyinstrument ,可以快速找到代碼運(yùn)行最慢的部分,幫助提高代碼的性能。支持 Python 3.7+ 且能夠分析異步代碼,僅需一條命令即可顯示具體代碼的耗時(shí)。經(jīng)常寫 Python 的小伙伴一定要用一下
    2021-09-09
  • python數(shù)據(jù)分析apply(),map(),applymap()用法

    python數(shù)據(jù)分析apply(),map(),applymap()用法

    這篇文章主要介紹了python數(shù)據(jù)分析apply(),map(),applymap()用法,可以方便地實(shí)現(xiàn)對(duì)批量數(shù)據(jù)的自定義操作。用法歸納如下,需要的朋友可以參考一下
    2022-03-03
  • 利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過程

    利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過程

    本文給大家介紹使用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過程,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08
  • python集合類型用法分析

    python集合類型用法分析

    這篇文章主要介紹了python集合類型用法,實(shí)例分析了Python中集合的功能及常見使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python與數(shù)據(jù)庫交互:入門指南

    Python與數(shù)據(jù)庫交互:入門指南

    這篇文章主要介紹了Python與數(shù)據(jù)庫交互:入門指南的相關(guān)資料,需要的朋友可以參考下
    2023-11-11

最新評(píng)論