91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中list列表復制的方法有哪些

發布時間:2022-08-25 11:43:53 來源:億速云 閱讀:190 作者:iii 欄目:開發技術

這篇“python中list列表復制的方法有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python中list列表復制的方法有哪些”文章吧。

    1、淺拷貝和深拷貝

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

    深拷貝會額外創建一個新的對象,新對象跟原對象并不共享內存,修改新對象不會影響到原對象。

    賦值其實就是引用了原對象。兩者指向同一內存,兩個對象是聯動的,無論哪個對象發生改變都會影響到另一個。

    2、直接賦值

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

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    if __name__ == '__main__':
        a = ["a", ["b", "c", "d"], ["e", "f"]]
        # 直接復制,即引用列表
        b = a
        print(a)
        print(b)
        # 通過id()查看內存地址,為一樣的
        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循環

    使用for循環進行拷貝,僅第一層為深拷貝,對其它層依然是淺拷貝。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    if __name__ == '__main__':
        a = ["a", ["b", "c", "d"], ["e", "f"]]
        b = []
        # 使用for循環進行拷貝,僅第一層為深拷貝
        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、切片

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

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    if __name__ == '__main__':
        a = ["a", ["b", "c", "d"], ["e", "f"]]
        # 使用切片進行拷貝,僅第一層為深拷貝
        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()方法進行拷貝,也僅對第一層為深拷貝,對其它層依然是淺拷貝。由于列表中嵌套的列表實際保存的是地址,依然指向同一個內存地址。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
     
    if __name__ == '__main__':
        a = ["a", ["b", "c", "d"], ["e", "f"]]
        # 使用list.copy()方法進行拷貝,僅第一層為深拷貝
        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()方法進行拷貝,也僅對第一層為深拷貝,對其它層依然是淺拷貝。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import copy
     
    if __name__ == '__main__':
        a = ["a", ["b", "c", "d"], ["e", "f"]]
        # 使用copy.copy()方法進行拷貝,僅第一層為深拷貝
        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()方法進行拷貝,對所有層均為深拷貝,改變新列表并不會影響到原列表,推薦使用。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import copy
     
    if __name__ == '__main__':
        a = ["a", ["b", "c", "d"], ["e", "f"]]
        # 使用copy.deepcopy()方法進行拷貝,對所有層均為深拷貝
        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

    以上就是關于“python中list列表復制的方法有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    麻城市| 台中县| 永州市| 八宿县| 绍兴市| 新龙县| 霍城县| 张家口市| 苍南县| 竹溪县| 贺州市| 远安县| 邢台县| 黄大仙区| 广宁县| 伊金霍洛旗| 旺苍县| 永吉县| 北海市| 甘肃省| 海安县| 信阳市| 乐昌市| 崇信县| 渭南市| 崇州市| 措美县| 紫金县| 四会市| 耒阳市| 泰安市| 长岭县| 常山县| 平顺县| 仲巴县| 义乌市| 融水| 宜章县| 宁化县| 新巴尔虎右旗| 崇礼县|