Python旧版课程库
Python第 02 期 - 基础查看课程总览

042_自学课 数据结构 - 列表的拷贝

主要内容

    列表的拷贝:
  1. 浅拷贝
  2. 深拷贝

1. 列表的拷贝

拷贝即复制,列表的拷贝就是将一个列表里所有的内容复制给另一个列表。 列表的拷贝有两种方式:浅拷贝和深拷贝

2. 列表的浅拷贝

浅拷贝只是复制了对象的一个引用 比如,一个人(即一个对象)可以有很多个称号,每个称号都可以理解为是对这个人的一个引用。 所以不管这个人做了什么改变,所有指向这个人的引用都会跟着一起被改变。 因为无论是哪一个引用,它们都指的是同一个人物。 列表浅拷贝的方式是:直接用变量名进行赋值即可 比如以下程序:

a = [1, 2, 3]
b = a            # 对列表a执行浅拷贝,将拷贝结果赋值给变量b
print('b = ', b)
print('a = ', a)

#由于a和b指向的是同一个列表,所以修改b则意味着修改了a
b[1] = 100       
print('b = ', b)
print('a = ', a)

3. 列表的深拷贝

深拷贝是将对象进行复制,然后用不同的引用分别表示这些对象 比如:一对双胞胎,一模一样,若改变了其中一个人,这改变不会发生在另一个人身上。 因为他们是两个不同的个体 列表深拷贝的方式是:用变量里的元素进行赋值 比如以下程序:

a = [1, 2, 3]
b = a[:]           # 用切片的方法对列表a执行深拷贝,将拷贝结果赋值给变量b
print('b = ', b)
print('a = ', a)

#由于a和b是相同的内容,但不同的个体,所以修改b不会对a造成任何影响
b[1] = 100       
print('b = ', b)
print('a = ', a)

4. 小结

  • 列表的浅拷贝是复制了对象的一个引用
  • 列表的深拷贝是将对象进行复制
  • 习题

    1. 跳到练习页面