23-python基础-python3-浅拷贝与深拷贝(1)
1.可变和不可变数据类型。
- 列表是‘可变的’数据类型,它的值可以添加、删除或改变。
- 字符串是‘不可变的’,它不能被更改。
(1)字符串
- 尝试对字符串中的一个字符重新赋值,将导致TypeError错误。
a = 'abcd'
a[0]='e' Traceback (most recent call last):
4 File "C:\Users\summer\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2961, in run_code
5 exec(code_obj, self.user_global_ns, self.user_ns)
6 File "<ipython-input-37-93bf15c8bf3d>", line 1, in <module>
7 a[0]='e'
8 TypeError: 'str' object does not support item assignment
- ‘改变’一个字符串的正确方式,使用切片和连接
a = 'abcd'
a = a[:1]+'e'+a[1:]
a
'aebcd'
(2)列表
- 区别:列表的覆盖和修改
- 列表覆盖(并不能修改列表,而是创建一个新的列表)
b = [1,2,3]
id(b)
Out[42]: 95411912
b = [2,3,4]
id(b)
Out[44]: 95411720
- 列表修改(在当前列表修改,不会创建新的列表)
b = [1,2,3]
id(b)
Out[46]: 93984712
b.append(4)
b
Out[48]: [1, 2, 3, 4]
id(b)
Out[49]: 93984712
del b[0]
b
Out[51]: [2, 3, 4]
id(b)
Out[52]: 93984712
(3)元组
- 元组与列表的主要区别在于,元组像字符串一样,是不可变的。元组不能让它们的值被修改、添加或删除。
a = ('hello',1,'a')
a[0]=1
3 Traceback (most recent call last):
4 File "C:\Users\summer\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2961, in run_code
5 exec(code_obj, self.user_global_ns, self.user_ns)
6 File "<ipython-input-54-f9da761c742a>", line 1, in <module>
7 a[0]=1
8 TypeError: 'tuple' object does not support item assignment
2. 引用
- 引用是一个值,指向某些数据。
- 在变量必须保存可变数据类型的值时,例如列表或字典,Python 就使用引用。
- 将列表赋给一个变量时,实际上是将列表的“引用”赋给了该变量。列表引用是指向一个列表的值。
- 对于不可变的数据类型的值,例如字符串、整型或元组,Python变量就保存值本身。
spam = [0, 1, 2, 3, 4, 5]
id(spam)
Out[66]: 95545224
cheese = spam
cheese
Out[68]: [0, 1, 2, 3, 4, 5]
id(cheese)
Out[69]: 95545224
cheese[1]='hello'
cheese
Out[71]: [0, 'hello', 2, 3, 4, 5]
spam
Out[72]: [0, 'hello', 2, 3, 4, 5]
id(cheese)
Out[73]: 95545224
id(spam)
Out[74]: 95545224
23-python基础-python3-浅拷贝与深拷贝(1)的更多相关文章
- python 基础之浅拷贝与深拷贝
浅拷贝与深拷贝 1.普通赋值 例1: a = 15b = aa = 16print(b)#例2:lst1 = [1,2,3]lst2 = lst1lst1.append(4)print(lst2)#这 ...
- [编程基础] Python对象的浅拷贝与深拷贝笔记
Python中的赋值语句不创建对象的副本,它们只将名称绑定到对象.对于不可变的对象,这通常没有什么区别.但是对于处理可变对象或可变对象的集合,您可能需要寻找一种方法来创建这些对象的"真实副本 ...
- python 进阶篇 浅拷贝与深拷贝
阐述引用.浅拷贝和深拷贝前,首先需要要了解 Python 的世界里,一切皆对象,每个对象各包含一个 idendity.type 和 value. 引用(Reference) >>> ...
- Python 引用、浅拷贝、深拷贝解析
引用 Python是动态数据类型的语言,故在对变量进行赋值时是不用制定变量类型的. 或者说,你可以把变量赋值的过程,当作是贴一个标签,去引用该数据. 看下面的例子: In [54]: a=4 In [ ...
- python赋值、浅拷贝、深拷贝区别
在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出现一些问题.所以,在这里按个人的理解谈谈它们之间的区别. 一.赋值(assignment) 在<Py ...
- Python 赋值、浅拷贝和深拷贝
初学Python,和C++还是有许多不同.直接赋值.浅拷贝和深拷贝,这三种拷贝对象的操作之间还是有许多的区别.Python语言的版本为2.7,在Pycharm中进行实验. 一.直接赋值 用下面的代码来 ...
- Python赋值、浅拷贝、深拷贝
一.赋值(assignment) >>> a = [1, 2, 3] >>> b = a >>> print(id(a), id(b), sep= ...
- python中的浅拷贝,深拷贝
直接引用,间接引用 # 1.列表存储的是索引对应值的内存地址,值会单独的开辟一个内存空间 list = ["a","b"] 内存里面存储的就是list[0],l ...
- python中的浅拷贝和深拷贝
1.赋值语句 a = 'abc' b = a print id(a) print id(b) # id(a):29283464 # id(b):29283464 通过简单的复制,我们可以看到,a b其 ...
- 16.python中的浅拷贝和深拷贝
在讲什么是深浅拷贝之前,我们先来看这样一个现象: a = ['scolia', 123, [], ] b = a[:] b[2].append(666) print a print b
随机推荐
- es6 Promise.reject()方法
es6 Promise.reject()方法:https://blog.csdn.net/ixygj197875/article/details/79188195
- [Fw]初探linux中断系统(2)
初探linux中断系统(2) 中断系统初始化的过程 用来初始化中断系统的函数位于arch/x86/kernel/irqinit.c,定义如下 void __init init_IRQ(void){ i ...
- java虚拟机规范(se8)——class文件格式(七)
4.7.5 Exceptions 属性 Exceptions 属性是一个变长属性,它位于 method_info(§4.6)结构的属性表中. Exceptions 属性指出了一个方法需要检查的可能抛出 ...
- RabbitMq--2--安装
简单说下个人的理解,mq就是一个消息代理,负责异步消息转发,可以很大程度缓解服务器压力,并且防止服务器宕机影响业务等. 安装: 环境:centos7 1).首先需要安装erlang #wget htt ...
- Node.js定时邮件的那些事儿
近开发一个项目,需要在Node.js程序里实现定期给管理员发邮件的功能. 笔者平时只会在Web界面收发邮件.对邮件的原理完全不懂(可能大学教过,然而全忘了),直到要解决这个问题.请教了几个业务的同事, ...
- Java:新建数组
Array Initialization int[] a; = int a[]; int[] a = new int[100]; a[]的值会被初始化为0 `int[] smallPrimes = { ...
- 在Anaconda环境下使用Jupyter Notebook
!!!Anaconda 和 Jupyter Notebook 在 zsh 环境下不能正常使用! 启动建立的 Anaconda 环境 安装 nb_conda:conda install nb_conda ...
- SQL Ssever 安装.NET3.5 框架
SQL Ssever 安装.NET3.5 框架 我们在安装 SQL Sever 2014 的时候必须要安装 .NET3.5 框架,然后才能继续安装 SQL Server 2014. 您可能在安装 SQ ...
- hibernate 1 对1
举例:部门departments -------部门经理managers 映射 有两种方式 1:外键映射.类似于多对1.但是设置了unique唯一. 带外键的: package com.hiber ...
- 2.zabbix自定义模板
zabbix自定义模板 zbx_base_templates.xml <?xml version="1.0" encoding="UTF-8"?> ...



