python3 列表的赋值和深浅拷贝

Posted YanYan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 列表的赋值和深浅拷贝相关的知识,希望对你有一定的参考价值。

‘‘‘
列表赋值:不会创建新对象
两个列表的内存地址一样
‘‘‘
# lst1 = ["apple", "banana", ["blueberry", "strawberry"]]
# lst2 = lst1
# print(lst1)
# print(lst2)
# print(id(lst1))
# print(id(lst2))
# lst1.append("watermelon")
# print(lst1)
# print(lst2)
# lst1.append("pear")
# print(lst1)
# print(lst2)

‘‘‘
拷贝的意义:快速的创建对象
浅拷贝:只拷贝第一层内容,复制一个表面,更深层次的内容,只拷贝一个内存地址
1.列表切片赋值
两个列表的内存地址不一样
‘‘‘
# lst1 = ["apple", "banana", ["blueberry", "strawberry"]]
# lst2 = lst1[:]
# print(lst1)
# print(lst2)
# print(id(lst1))
# print(id(lst2))
# lst1.append("watermelon")
# print(lst1)
# print(lst2)
# lst1[2].append("pear")
# print(lst1)
# print(lst2)

‘‘‘
拷贝的意义:快速的创建对象
浅拷贝:只拷贝第一层内容,复制一个表面,更深层次的内容,只拷贝一个内存地址
2.copy()
两个列表的内存地址不一样
‘‘‘
# lst1 = ["apple", "banana", ["blueberry", "strawberry"]]
# lst2 = lst1.copy()
# print(lst1)
# print(lst2)
# print(id(lst1))
# print(id(lst2))
# lst1.append("watermelon")
# print(lst1)
# print(lst2)
# lst1[2].append("pear")
# print(lst1)
# print(lst2)

‘‘‘
深拷贝:把内容完全的复制一份
import copy
copy.deepcopy()
两个列表的内存地址不一样,两个列表没有任何的关联了
‘‘‘
# import copy
# lst1 = ["apple", "banana", ["blueberry", "strawberry"]]
# lst2 = copy.deepcopy(lst1)
# print(lst1)
# print(lst2)
# print(id(lst1))
# print(id(lst2))
# lst1.append("watermelon")
# print(lst1)
# print(lst2)
# lst1[2].append("pear")
# print(lst1)
# print(lst2)

以上是关于python3 列表的赋值和深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

Python3 深浅拷贝

自己总结关于赋值和复制(深浅拷贝)

深浅拷贝

Python3.5深浅拷贝问题

python 深浅拷贝

Python之深浅拷贝