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

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

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

1、淺拷貝和深拷貝

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

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

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

2、直接賦值

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

#!/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)行拷貝,僅第一層為深拷貝,對其它層依然是淺拷貝。

#!/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)行拷貝,也僅對第一層為深拷貝,對其它層依然是淺拷貝。

#!/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)行拷貝,也僅對第一層為深拷貝,對其它層依然是淺拷貝。由于列表中嵌套的列表實(shí)際保存的是地址,依然指向同一個內(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)行拷貝,也僅對第一層為深拷貝,對其它層依然是淺拷貝。

#!/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)行拷貝,對所有層均為深拷貝,改變新列表并不會影響到原列表,推薦使用。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import copy
 
if __name__ == '__main__':
    a = ["a", ["b", "c", "d"], ["e", "f"]]
    # 使用copy.deepcopy()方法進(jìn)行拷貝,對所有層均為深拷貝
    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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

阿克陶县| 东山县| 通州市| 宣武区| 榆树市| 尤溪县| 成武县| 平山县| 九龙城区| 安平县| 凭祥市| 交城县| 玉环县| 霍林郭勒市| 永靖县| 旅游| 黄骅市| 双城市| 涞源县| 牙克石市| 黄浦区| 武功县| 香河县| 建水县| 松溪县| 边坝县| 徐州市| 镇坪县| 梁平县| 新巴尔虎左旗| 安平县| 孝昌县| 边坝县| 通辽市| 汕头市| 常德市| 肥城市| 浦城县| 剑阁县| 托里县| 隆昌县|