python基础三(深浅拷贝)

1.赋值操作

1 list_1 = [1,2,3,[‘barry‘,‘Jerry‘]]
2 list_2 = list_1
3 list_1[0] = 111
4 print(list_1) #  [111, 2, 3, [‘barry‘, ‘Jerry‘]]
5 print(list_2) #  [111, 2, 3, [‘barry‘, ‘Jerry‘]]

对于赋值运算操作。list[1]与list[2]指向的是同一个内存地址。所以完全一样

2.浅拷贝

1 # -------------浅拷贝----------------
2 # 对于浅拷贝而言。第一层的创建时新的内存地址。而从第二层开始指向的都是同一块内存地址
3 list_1 = [1,2,3,[‘barry‘,‘Jerry‘]]
4 list_2 = list_1.copy()
5 list_1[0] = 111
6 print(id(list_1[3])) # 40904072 同一块内存地址
7 print(id(list_2[3])) # 40904072 同上
8 print(list_1) # [111, 2, 3, [‘barry‘, ‘Jerry‘]]
9 print(list_2) #  [1, 2, 3, [‘barry‘, ‘Jerry‘]]

对于浅拷贝而言。第一层创建时产生新的内存地址。而从第二层开始指向的都是同一块内存地址

3.深拷贝

1 # -------------深拷贝----------------
2 import copy
3 list_1 = [1,2,3,[‘barry‘,‘Jerry‘]]
4 list_2 = copy.deepcopy(list_1)
5 list_1[3][0]=[‘Jack‘]
6 print(list_1) # [1, 2, 3, [[‘Jack‘], ‘Jerry‘]]
7 print(list_2) # [1, 2, 3, [‘barry‘, ‘Jerry‘]]

对于深拷贝而已。创建两个不同的内存地址。只是将list1 中的元素完整的拷贝一份给list2

原文地址:https://www.cnblogs.com/shine-rainbow/p/9775400.html

时间: 2024-07-29 20:22:11

python基础三(深浅拷贝)的相关文章

python基础(深浅拷贝)

本文主要介绍:深浅拷贝                                                                       注意:在python中有一种自己的优化机制,通常来说字符串在内存中的地址是不相同的,但是在python中,不管是深拷贝还是浅拷贝,只要是通过拷贝的字符串,两个地址是相同的 一.创建 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author by lh 4 5 import

Python基础:深浅拷贝

对于数字.字符串深浅拷贝: import copy num = 0 copy_num = copy.copy(num) print("These are normal copy").center(60,'*') print(num,id(num)) print(copy_num,id(copy_num)) print("These are deep copy").center(60,'*') deep_copy_num = copy.deepcopy(num) pr

python基础,深浅拷贝

赋值 1 直接赋值(字典同理) lst1 = [1,2,3] lst2 = [1,2,3] print(id(lst1),id(lst2)) 结果:2426068165192 2426069393800 2 引用赋值(字典同理) lst2 = [1,2,3] lst3 = lst2 print(id(lst2),id(lst3)) lst3.append(4) print(lst2) print(lst3) 结果:1857178919496 1857178919496[1, 2, 3, 4][1

Python中的深浅拷贝详解

要说明Python中的深浅拷贝,可能要涉及到下面的一系列概念需要简单说明下: 变量-引用-对象(可变对象,不可变对象)切片-拷贝-浅拷贝-深拷贝 [变量-对象-引用] 在Python中一切都是对象,比如说: 3, 3.14, 'Hello', [1,2,3,4],{'a':1}...... 甚至连type其本身都是对象,type对象 Python中变量与C/C++/Java中不同,它是指对象的引用 单独赋值: 比如说: >>> a = 3 在运行a=3后,变量a变成了对象3的一个引用.在

Python中的深浅拷贝

Python中的深浅拷贝 前言:我们在了解深浅拷贝之前首先需要明白的一点知识 不可变类型数据:不可变类型即指当改变其内元素时,内存空间将会发生变化,比如常见的不可变类型有:str,boolean, int,tuple. temp = "哈哈哈" ret = temp.replace("哈", "嘿", 2) print(temp) # 哈哈哈 print(ret) # 嘿嘿哈 # 我们可以看到temp的值并没有发生改变,这就是为什么对str数据改

python基础三(列表和元组)

数据结构:数据结构是以某种方式(如通过编号)组合起来的数据元素集合.在python中,最基本的数据结构为序列,序列中每个元素都有编号从0开始. 1.序列概述:?python内置了许多种序列,列表.元组.字符串等.?列表和元组的不同在于,列表是可以修改的,而元组不可以,这意味着列表用于需要中途添加元素的情形,而元组适用于禁止修改元素的情形. 1.1.创建列表 假设你现在需要一个东西来储存多个名字,那么用列表正合适 list_name = ["王晓明","李二"] #所

python之路-深浅拷贝

深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层.所以对于只有一层的数据集合来说深浅拷贝的意义是一样的,比如字符串,数字,还有仅仅一层的字典.列表.元祖等 对于以下数据深浅拷贝的意义是一样的: name = 'beijing' age = 12 list1 = [1,2,3,4] dic1 = {'name':'beijing','age':20}

python——赋值与深浅拷贝

初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一--python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来了解一下python内存中变量的存储情况. 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身.  引

python小白-day3 深浅拷贝

一.深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址.下面是字符串例子,数字与其相同: 1 2 3 4 5 6 7 8 9 import copy n1 = 'abc' n2 = n1 n3 = copy.copy(n1) n4 = copy.deepcopy(n1) print(id(n1)) print(id(n2)) print(id(n3)) print(id(n4)) 对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变

进击的Python【第三章】:Python基础(三)

Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型. 集合元素(set elements):组成集合的成员 >>> li=['a','b','c','a'] >>> se =set(li) >>> se set(['a', 'c', 'b