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)的更多相关文章

  1. python 基础之浅拷贝与深拷贝

    浅拷贝与深拷贝 1.普通赋值 例1: a = 15b = aa = 16print(b)#例2:lst1 = [1,2,3]lst2 = lst1lst1.append(4)print(lst2)#这 ...

  2. [编程基础] Python对象的浅拷贝与深拷贝笔记

    Python中的赋值语句不创建对象的副本,它们只将名称绑定到对象.对于不可变的对象,这通常没有什么区别.但是对于处理可变对象或可变对象的集合,您可能需要寻找一种方法来创建这些对象的"真实副本 ...

  3. python 进阶篇 浅拷贝与深拷贝

    阐述引用.浅拷贝和深拷贝前,首先需要要了解 Python 的世界里,一切皆对象,每个对象各包含一个 idendity.type 和 value. 引用(Reference) >>> ...

  4. Python 引用、浅拷贝、深拷贝解析

    引用 Python是动态数据类型的语言,故在对变量进行赋值时是不用制定变量类型的. 或者说,你可以把变量赋值的过程,当作是贴一个标签,去引用该数据. 看下面的例子: In [54]: a=4 In [ ...

  5. python赋值、浅拷贝、深拷贝区别

    在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出现一些问题.所以,在这里按个人的理解谈谈它们之间的区别. 一.赋值(assignment) 在<Py ...

  6. Python 赋值、浅拷贝和深拷贝

    初学Python,和C++还是有许多不同.直接赋值.浅拷贝和深拷贝,这三种拷贝对象的操作之间还是有许多的区别.Python语言的版本为2.7,在Pycharm中进行实验. 一.直接赋值 用下面的代码来 ...

  7. Python赋值、浅拷贝、深拷贝

    一.赋值(assignment) >>> a = [1, 2, 3] >>> b = a >>> print(id(a), id(b), sep= ...

  8. python中的浅拷贝,深拷贝

    直接引用,间接引用 # 1.列表存储的是索引对应值的内存地址,值会单独的开辟一个内存空间 list = ["a","b"] 内存里面存储的就是list[0],l ...

  9. python中的浅拷贝和深拷贝

    1.赋值语句 a = 'abc' b = a print id(a) print id(b) # id(a):29283464 # id(b):29283464 通过简单的复制,我们可以看到,a b其 ...

  10. 16.python中的浅拷贝和深拷贝

    在讲什么是深浅拷贝之前,我们先来看这样一个现象: a = ['scolia', 123, [], ] b = a[:] b[2].append(666) print a print b

随机推荐

  1. rabbitmq-5-案例2-简单的案例+exchange

    Exchange交换机: sendMessage端,发送消息到Exchage1.2, 然后交换机通过路由键,将消息转发给队列queue中,最后客户端从队列中获取消息 交换属性: name:名称 typ ...

  2. [Java 教程 04] Java基础语法

    在上一篇文章中我们已经运行了个简单的java程序,但是没有给大家讲解代码部分的内容与含义.学习,我们要做到知其然而知其所以然,所以本篇文章我们就来讲解java程序的基本语法,学完这篇文章你再回头看上篇 ...

  3. Cas 使用maven的overlay搭建开发环境 (二)

    关于cas-server的安装.部署网上教程很多.但是使用Cas,只通过部署时修改配置是无法满足产品需求的,因此需要我们改造Cas.本文讲解如何使用maven的overlay无侵入的改造Cas. 什么 ...

  4. linux c 链接详解2-定义和声明

    2定义和声明 摘自:linux c编程一站式学习 可以学会extern和static用法,头文件知识. 2.1. extern和static关键字 在上一节我们把两个程序文件放在一起编译链接,main ...

  5. brew install ''package卡在Updating Homebrew

    关闭自动更新: export HOMEBREW_NO_AUTO_UPDATE=true

  6. 十、设计模式之代理(Proxy)模式

    什么是代理模式 代理模式是对象的结构模式,为其他对象提供一种对象以控制对这个对象的访问. 代理模式的结构图如下:(源自大话设计模式)   Subject:定义了RealSubject和Proxy的公共 ...

  7. oracle exp不生成dumpfile,预估出实际导出文件的大小。

    目的:在不创建dumpfile前预估出需要的导出文件大小.  适用于export     实验步骤如下:OS:  Linux test20 2.6.18-238.el5 #1 SMP Sun Dec ...

  8. vue框架中什么是MVVM

    前端页面中使用MVVM的思想,即MVVM是整个视图层view的概念,属于视图层的概念. MVVM是前端视图层的分层开发思想,将页面分成了Model, View,和VM:其中VM是核心,因为VM是V和M ...

  9. python 环境安装说明

    一.        安装 python-3.6.5-amd64.exe   1. 安装完成后,设置系统环境变量 Path E:\Programs\Python\Python36; E:\Program ...

  10. 关于Linux_监控系统资源/性能命令_vmstat

    (系统资源查看命令-vmstat[监控系统资源命令])          command:vmstat  [刷新延时 刷新次数]   分解解析: procs:进程信息字段:              ...