python中列表copy的用法,python中如何拷贝一个对象

  python中列表copy的用法,python中如何拷贝一个对象

  这篇文章主要介绍了大蟒中五种列表拷贝的方法,在大蟒中,我们经常会遇到需要拷贝列表的情形,下面针对常用的列表拷贝方法进行介绍和总结,希望可以给大家带来更多感性的认识

  

目录
1.赋值操作2.使用复制操作3.使用列表()构造函数4.使用索引5.列表生成式6 总结

  

1. 赋值操作

  最容易想到的就是我们可以使用赋值操作来直接复制列表,

  代码如下:

  复制列表=原始列表

  此时,原始_列表和复制_列表都将指向同一个列表对象。

  举例如下:

  original_list=[1,2,3]

  #使用赋值操作复制列表

  复制列表=原始列表

  打印(复制_列表)

  #输出:[1,2,3]

  打印(原始_列表)

  #输出:[1,2,3]

  #检查原始列表和复制列表的编号

  打印(id(原始列表))

  #输出:

  打印(id(copy _ list))

  #输出:26751688

  上图可视化如下:

  此时,在原始_列表中所做的修改将反映在复制_列表中,反之亦然。

  样例代码如下:

  #修改原始列表

  原始_列表。追加(99)

  #输出:[1,2,3,99]

  打印(复制_列表)

  #输出:[1,2,3,99]

  打印(id(原始列表))

  #输出:26751688

  打印(id(copy _ list))

  #输出:26751688

  可视化结果如下:

  

2. 使用copy操作

  我们也可以使用复制()函数来复制大蟒列表,此时原始_列表和复制_列表指向内存中不同的列表对象。

  样例代码如下:

  original_list=[1,2,3]

  #使用复制功能复制列表

  copied_list=original_list.copy()

  打印(复制_列表)

  #输出:[1,2,3]

  打印(原始_列表)

  #输出:[1,2,3]

  #检查原始列表和复制列表的编号

  打印(id(原始列表))

  #输出:27800264

  打印(id(copy _ list))

  #输出:27799880

  可视化如下:

  由于二者指向内存不同,所以此时在原始列表中所做的修改不会反映在复制的列表中,反之亦然。

  #修改原始列表

  原始_列表。追加(99)

  打印(原始_列表)

  #输出:[1,2,3,99]

  打印(复制_列表)

  #输出:[1,2,3]

  打印(id(copy _ list))

  #输出:27799880

  打印(id(原始列表))

  #输出: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()等方式时,两个列表将指向不同的列表对象。

  到此这篇关于Python中五种列表拷贝的方法的文章就介绍到这了,更多相关Python列表拷贝方法内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: