一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python中使用copy模塊實現列表(list)拷貝

Python中使用copy模塊實現列表(list)拷貝

2020-06-05 13:17腳本之家 Python

這篇文章主要介紹了Python中使用copy模塊實現列表(list)拷貝,本文講解了簡單列表的復制和復雜列表復制的解決方法,需要的朋友可以參考下

引用是指保存的值為對象的地址。在 Python 語言中,一個變量保存的值除了基本類型保存的是值外,其它都是引用,因此對于它們的使用就需要小心一些。下面舉個例子:

問題描述:已知一個列表,求生成一個新的列表,列表元素是原列表的復制

復制代碼 代碼如下:

a=[1,2]
b=a

這種做法其實并未真正生成一個新的列表,b指向的仍然是a所指向的對象。這樣,如果對a或b的元素進行修改,a,b的值同時發生變化。

 

解決的方法為:

復制代碼 代碼如下:

a=[1,2]
b=a[:]

這樣修改a對b沒有影響。修改b對a沒有影響。

 

但 這種方法只適用于簡單列表,也就是列表中的元素都是基本類型,如果列表元素還存在列表的話,這種方法就不適用了。原因就是,象a[:]這種處理,只是將列 表元素的值生成一個新的列表,如果列表元素也是一個列表,如:a=[1,[2]],那么這種復制對于元素[2]的處理只是復制[2]的引用,而并未生成 [2]的一個新的列表復制。為了證明這一點,測試步驟如下:

復制代碼 代碼如下:

>>> a=[1,[2]]
>>> b=a[:]
>>> b
[1, [2]]
>>> a[1].append(3)
>>> a
[1, [2, 3]]
>>> b
[1, [2, 3]]

可見,對a的修改影響到了b。如果解決這一問題,可以使用copy模塊中的deepcopy函數。修改測試如下:
復制代碼 代碼如下:

>>> import copy
>>> a=[1,[2]]
>>> b=copy.deepcopy(a)
>>> b
[1, [2]]
>>> a[1].append(3)
>>> a
[1, [2, 3]]
>>> b
[1, [2]]

有時候知道這一點是非常重要的,因為可能你的確需要一個新的列表,并且對這個新的列表進行操作,同時不想影響原來的列表。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本xxxxxl1820| 日本大尺度激情做爰叫床 | 四虎在线视频免费观看视频 | 国产欧美一区二区精品性色 | 77成人影视 | 无人区免费一二三四乱码 | 日韩免费视频播播 | 丝瓜秋葵番茄绿巨人在线观看 | 国产清纯白嫩大学生正在播放 | 美女脱了内裤张开腿亲吻男生 | 日本精品vide·ssex日本 | 91制片厂制作传媒网站破解 | 天天干天天色综合 | 亚洲成人影院在线观看 | 日本天堂视频在线观看 | 日本视频高清免费观看xxx | 国产第一草草影院 | 精品视频99 | 视频在线观看入口一二三2021 | 欧美精品1区2区 | 91传媒制片厂制作传媒破解版 | 黄漫在线播放 | 欧美日韩国产亚洲一区二区三区 | 国产成人精品一区二区仙踪林 | 舔到喷水 | 国产成人精品1024在线 | 欧美一级片观看 | 国产v日韩v欧美v精品专区 | 国产精品最新 | 999精品视频在线观看热6 | 91视频www| 视频一区二区三区在线观看 | 日韩一区二区三区四区区区 | 91污污视频 | 深夜网站在线观看 | 成人国产一区二区 | 公妇乱淫在线播放免费观看 | 女仆掀起蕾丝裙被打屁股作文 | 日本中文字幕一区二区有码在线 | 32pao强力打造免费高速高 | 精品国产一区二区三区在线 |