Python入门第17课——深浅拷贝(只读课堂)

In [1]: #欢迎来到“只读课堂”!

 

In [2]: #今天,我们来学一个不一样的东西:深浅拷贝。

 

In [3]: #先看这个例子,一下两个列表,修改其中一个另外一个也会随之更改,没有拷贝。

 

In [4]: a = [1,2,3,[4,5]]

 

In [5]: b = 1

 

In [6]: a[0] = 'a'

 

In [7]: a[3][0] = 'a'

 

In [8]: a

Out[8]: ['a', 2, 3, ['a', 5]]

In [9]: b

Out[9]: 1

 

In [10]: b = a

 

In [11]: b

Out[11]: ['a', 2, 3, ['a', 5]]

 

In [12]: #这样b就拷贝了a

 

In [13]: #再深一步了解,例如:(在设置变量名的时候,请不要用python原默认的名称。

 

In [14]: list_1 = [1,2,3,4]

 

In [15]: list_2 = [1,2,3,4]

 

In [16]: list_1[0] = 'a'

 

In [17]: list_1

Out[17]: ['a', 2, 3, 4]

 

In [18]: #我们看一下list_2会不会因为list_1的修改而修改。

 

In [19]: list_2

Out[19]: [1, 2, 3, 4]

 

In [20]: #显然它就是“你改你的,关我啥事”。

 

In [21]: #如果这样:

 

In [22]: list_2 = list_1

 

In [23]: list_1[0] = 'a'

 

In [24]: list_1

Out[24]: ['a', 2, 3, 4]

 

In [25]: #它确确实实地改成了a

 

In [26]: list_2

Out[26]: ['a', 2, 3, 4]

 

In [27]: #你会发现,它也改了。

 

In [28]: #——————————————————————————————————————————————————————————————————————

 

In [29]: #进行拷贝

 

In [30]: 11 = [1,2,3,4]

 

In [31]: L = [1,2,3,4]

 

In [32]: Q = L[:]

 

In [33]: L

Out[33]: [1, 2, 3, 4]

In [34]: Q

Out[34]: [1, 2, 3, 4]

 

In [35]: #这样把它全部拷下来了

 

In [36]: #如果更复杂点:

 

In [37]: L = [1,2,3,['a','b']]

 

In [38]: Q = L[:]

 

In [39]: L

Out[39]: [1, 2, 3, ['a', 'b']]

 

In [40]: Q

Out[40]: [1, 2, 3, ['a', 'b']]

 

In [41]: #用切片改了。

 

In [42]: #如果原来地改地,拷贝后的会不会改呢?

 

In [43]: L = ['1','b']

 

In [44]: L

Out[44]: ['1', 'b']

 

In [45]: Q

Out[45]: [1, 2, 3, ['a', 'b']]

 

In [46]: #它是不会变地。

 

In [47]: #这就是“浅拷贝”。

 

In [48]: #——————————————————————————————————————————————————————————————————————

 

In [49]: #copy模块

 

In [50]: import copy

 

In [51]: L

Out[51]: ['1', 'b']

 

In [52]: Q

Out[52]: [1, 2, 3, ['a', 'b']]

 

In [53]: #例如:

 

In [54]: Q = copy.deepcopy(L)

 

In [55]: #这样就拷过去了。

 

In [56]: #如果原来的值再改

 

In [57]: L = [121212]

 

In [58]: L

Out[58]: [121212]

In [59]: Q

Out[59]: ['1', 'b']

 

In [60]: #它就不会改了。

 

In [61]: #这就是“深拷贝”。

 

In [62]: #列表是可变的,所以我们要掌握“深浅拷贝”这个知识,不然就会出现错误。

 

In [63]: print("\n本次“只读课堂”的python教程就到这了,欢迎继续收看!\n")

 

本次“只读课堂”的python教程就到这了,欢迎继续收看!

你可能感兴趣的:(#,只读课堂Python教程,python,1024程序员节)