您现在的位置是:主页 > news > 网网站建设/经典模板网站建设

网网站建设/经典模板网站建设

admin2025/6/12 20:29:51news

简介网网站建设,经典模板网站建设,做消费金融网站,android写wordpress目录 第五篇python进阶之深浅拷贝一、引言1.1可变 和不可变二、拷贝(只针对可变数据类型)三、浅拷贝四、深拷贝第五篇python进阶之深浅拷贝 一、引言 1.1可变 和不可变 id不变 值可以变 即为可变数据类型;值变id也变,即为不可变数…

网网站建设,经典模板网站建设,做消费金融网站,android写wordpress目录 第五篇python进阶之深浅拷贝一、引言1.1可变 和不可变二、拷贝(只针对可变数据类型)三、浅拷贝四、深拷贝第五篇python进阶之深浅拷贝 一、引言 1.1可变 和不可变 id不变 值可以变 即为可变数据类型;值变id也变,即为不可变数…

目录

  • 第五篇python进阶之深浅拷贝
    • 一、引言
      • 1.1可变 和不可变
    • 二、拷贝(只针对可变数据类型)
    • 三、浅拷贝
    • 四、深拷贝

第五篇python进阶之深浅拷贝

一、引言

1.1可变 和不可变

id不变 值可以变 即为可变数据类型;值变id也变,即为不可变数据类型

age = 19
print(f'first:{id(age)}')
age = 20
print(f'second:{id(age)}')
first:4384901776
second:4384901808

二、拷贝(只针对可变数据类型)

如果l2是l1的拷贝对象,则l1内的任何数据类型的元素发生变化,l2内部也会相应的改变

l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = l1l1.append('g')print(l1)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
print(l2)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']

个人觉得l1和l2共享着同一个列表,所以l1和l2不管谁修改了列表,都会改变列表的值

三、浅拷贝

如果l2是l1的拷贝对象,则l1内部的不可变数据类型的元素变化,则l2内部的元素不会改变;l1的可变元素发生变化,则l2对应的可变元素也跟着改变

 import copyl1 = ['a', 'b', 'c', ['d', 'e', 'f']]l2 = copy.copy(l1)l1.append('g')print(l1)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
print(l2)
['a', 'b', 'c', ['d', 'e', 'f']]
l1[3].append('g')print(l1)
['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
print(l2)
['a', 'b', 'c', ['d', 'e', 'f', 'g']]

个人觉得l1和l2可变元素是共享的,不可变元素是完全隔离的

四、深拷贝

如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化。

import copyl1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = copy.deepcopy(l1)l1.append('g')print(l1)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
print(l2)
['a', 'b', 'c', ['d', 'e', 'f']]
l1[3].append('g')print(l1)
['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
print(l2)
['a', 'b', 'c', ['d', 'e', 'f']]

转载于:https://www.cnblogs.com/demiao/p/11317840.html