網站首頁 編程語言 正文
1. 賦值操作
最容易想到的就是我們可以使用賦值操作來直接復制列表,
代碼如下:
copied_list=original_list
此時,original_list
和copyed_list
都將指向同一個列表對象。
舉例如下:
original_list=[1,2,3] #Copying list using assignment operation copied_list=original_list print(copied_list) #Output:[1, 2, 3] print(original_list) #Output:[1, 2, 3] #checking the id of both original and copied list print(id(original_list)) #Output: print(id(copied_list)) #Output:26751688
上圖可視化如下:
此時,在 original_list
中所做的修改將反映在copyed_list 中,反之亦然。
樣例代碼如下:
#modifying original_list original_list.append(99) #Output:[1, 2, 3,99] print(copied_list) #Output:[1, 2, 3,99] print(id(original_list)) #Output:26751688 print(id(copied_list)) #Output:26751688
可視化結果如下:
2. 使用copy操作
我們也可以使用 copy() 函數來復制 python 列表,此時original_list
和copyed_list
指向內存中不同的列表對象。
樣例代碼如下:
original_list=[1,2,3] #Copying list using copy function copied_list=original_list.copy() print(copied_list) #Output:[1, 2, 3] print(original_list) #Output:[1, 2, 3] #checking the id of both original and copied list print(id(original_list)) #Output:27800264 print(id(copied_list)) #Output:27799880
可視化如下:
由于二者指向內存不同,所以此時在原始列表中所做的修改不會反映在復制的列表中,反之亦然。
#modifying original_list original_list.append(99) print(original_list) #Output:[1, 2, 3,99] print(copied_list) #Output:[1, 2, 3] print(id(copied_list)) #Output:27799880 print(id(original_list)) #Output:27800264
可視化如下:
3. 使用list()構造函數
我們也可以使用list()
構造函數來復制列表。 original_list
和copyed_list
均指向不同的列表對象。代碼如下:
copied_list=list(original_list)
樣例代碼如下:
original_list=[1,2,3] #Copying list using list() constructor copied_list=list(original_list) print(copied_list) #Output:[1, 2, 3] print(original_list) #Output:[1, 2, 3] #checking the id of both original and copied list print(id(original_list)) #Output:27800264 print(id(copied_list)) #Output:27799880
此時,修改 original_list
中的元素不會反映在copyed_list
中,反之亦然。
#modifying original_list original_list.append(99) print(original_list) #Output:[1, 2, 3,99] print(copied_list) #Output:[1, 2, 3]
4. 使用索引
接著,我們可以使用索引方式來拷貝列表。
s[i:j:k] — slice of s from i to j with step k
此時,i,j,k解釋如下:
i → start index, j → end index, k → step
如果我們使用original_list[:]
,它將從頭到尾對 original_list
進行切片,并返回列表的副本。
如下所示:
copied_list=original_list[:]
接著我們來看個例子:
original_list=[1,2,3] #Copying list using INDEXING copied_list=original_list[:] print(copied_list) #Output:[1, 2, 3] print(original_list) #Output:[1, 2, 3] #checking the id of both original and copied list print(id(original_list)) #Output:27800264 print(id(copied_list)) #Output:27799880
此時,修改orignial_list
不會反映在copyed_list
中,反之亦然。
#modifying original_list original_list.append(99) print(original_list) #Output:[1, 2, 3,99] print(copied_list) #Output:[1, 2, 3] print(id(copied_list)) #Output:27799880 print(id(original_list)) #Output:27800264
5. 列表生成式
最后,我們可以使用列表生成式來復制列表中的元素,
代碼如下:
copied_list=[i for i in original_list]
我們來舉個栗子,代碼如下:
original_list=[1,2,3] #Copying list using list comprehension copied_list=[ i for i in original_list] print(copied_list) #Output:[1, 2, 3] print(original_list) #Output:[1, 2, 3] #checking the id of both original and copied list print(id(original_list)) #Output:27800264 print(id(copied_list)) #Output:27799880
此時,修改original_list
不會反映在copyed_list
中,反之亦然。
#modifying original_list original_list.append(99) print(original_list) #Output:[1, 2, 3,99] print(copied_list) #Output:[1, 2, 3] print(id(copied_list)) #Output:27799880 print(id(original_list)) #Output:27800264
6 總結
在本文中,主要介紹了在 python 中復制列表的不同方法。
- 使用賦值操作,此時兩個列表將指向同一個列表對象
- 使用索引,列表構造函數,列表生成式,copy()等方式時,兩個列表將指向不同的列表對象。
原文鏈接:https://blog.csdn.net/sgzqc/article/details/122742914
相關推薦
- 2022-11-16 Python制作數據分析透視表的方法詳解_python
- 2023-06-18 C#使用udp如何實現消息的接收和發送_C#教程
- 2022-04-08 Python實現自定義異常實例_python
- 2022-08-23 Python腳本提取fasta文件單序列信息實現_python
- 2023-01-02 Kotlin類對象class初始化與使用_Android
- 2022-04-04 react安裝報錯ReactDOM.render is no longer supported in
- 2022-03-16 部署.NET6項目到IIS_實用技巧
- 2022-02-18 微信小程序----------父組件調用子組件的方法
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支