一:学习内容

  • python3中六种数据类型
  • python赋值
  • python浅拷贝
  • python深拷贝

二:python3六种数据类型

1.六种数据类型

  • Number(数字)
  • string(字符串)
  • List(列表)
  • Tuple(元祖)
  • Set(集合)
  • Dictionary(字典)

2.六种数据类型分类

  • 不可变数据(3个):Number、String、Tuple
  • 可变数据(3个):List、Dictionary、Set

3.六种类型总结

  • Number(数字):支持 int(整形)、float(浮点型)、bool(布尔型)、complex(复数).  只有一个整数类型int,表示为长整型;没有python2中的long。
  • String(字符串):字符串使用双引号或是单引号括起来,同时使用反斜杠转义特殊字符;索引以0为开始值,-1为从末尾的开始位置。
  • List(列表):列表写在 [] 之间,元素之间用逗号隔开;索引以0为开始值,-1为从末尾的开始位置;列表元素类型可以不同,由数字、字符串、列表(所谓的嵌套)组成;有序的对象集合。
  • Tuple(元组):元组写在()之间,元素之间用逗号隔开;元组元素类型可以不同,由数字、字符串、元组等组成;元组的元素不可变,但是可以包含可变的对象,比如list列表;有序的对象集合;构造一个元素的元组,需要在元素后面加上逗号。
  • Dictionary(字典):字典写在{}之间,由键(key):值(value)对集合组成,元素之间用逗号隔开;字典中的元素通过键来存取,而不是通过偏移存取;键key必须使用不可变类型,同一个字典中,键必须是唯一的;创建空字典使用 {}。
  • Set(集合):集合写在{}之间,基本功能是进行成员关系测试和删除重复元素;可使用大括号 {}或者set()函数创建集合;创建一个空集合必须是set(),{}代表的是空字典。

三:python赋值

1.赋值(=):数据完全共享

赋值是在内存中指向同一个对象:

如果是可变(mutable)类型,比如列表、字典、集合,修改其中一个,另一个必定改变

如果是不可变类型(immutable),比如数字、字符串、元组,修改了其中一个,另一个并不会变

2.举例说明--可变类型赋值:列表、字典、集合

====s1是可变类型列表,s1赋值给s2,然后修改s1,s2就会跟着改变

s1 = [1,2,3]
s2 = s1
s1.append(4)
s1
s2

====s3是可变类型字典,s3赋值给s4,然后修改s3,s4就会跟着改变

s3= {"name":"tester"}
s4 = s3
s3["age"] = 18
s3
s4

====s5是可变类型集合,s5赋值给s6,然后修改s5,s6就会跟着改变

s5= set([1,2,3,4])
s6 = s5
s5.add(5)
s5
s6

3.举例说明--不可变类型赋值:数字、字符串、元组

====s1是不可变类型数字,s1赋值给s2,然后修改s1,s2不会跟着改变

s1 = 10
s2 = s1
s1=12
s1
s2

====s3是不可变类型字符串,s3赋值给s4,然后修改s3,s4不会跟着改变

s3 = "testing"
s4 = s3
s3=  "tesing testing"
s3
s4

====s5是不可变类型元组,s5赋值给s6,然后修改s5,s6不会跟着改变

s5 = (1,2,3)
s6 = s5
s5=  (1,2,3,4)
s5
s6

四:python浅拷贝

1.浅拷贝:数据半共享(拷贝第一层的数据,具有自己单独的内存地址;嵌套层即第二层或其他层不拷贝,指向原有的内存地址)

2.原则

只复制一层,他变我不变;其余层,他变我也变。
如果只有一层,就相当于深拷贝了

3.方法-三种

第一种:a = b[:]
第二种:a = b.copy()
第三种:引用copy模块,import copy  |  a = copy.copy(b)

4.举例--浅拷贝

s1 = [1,2,3,[4,5,6]]
#浅拷贝
s2 = s1[:]

#s1第一层改变,s2不会跟着改变
s1[2] = 55
s1
s2

#s1第二层即嵌套层改变,s2也跟着改变
s1[3][0] = 66
s1
s2

图解上述过程:

s2在内存中已经独立出s1第一层的数据,第二层的数据并没有拷贝成功,而是指向了s1中的第二层数据的内存地址

所以就会有:

s1中第一层数据发生变化,s2中第一层数据不跟着改变

s1中第二层数据发生变化,s2中第二层数据也发生变化

五:python深拷贝

1.深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)

2.原则

他变我也变。

3.方法

引用copy模块,import copy  |  a = copy.deepcopy(b)

4.举例--深拷贝

import copy

s1 = [1,2,3,[4,5,6]]
#深拷贝
s2 = copy.deepcopy(s1)

#s1第一层改变,s2不会跟着改变
s1[2] = 55
s1
s2

#s1第二层即嵌套层改变,s2也不会跟着改变
s1[3][0] = 66
s1
s2

图解上述过程:

s2在内存中已经独立出s1的数据

所以就会有:

s1中第一层数据发生变化,s2中第一层数据不跟着改变

s1中第二层数据发生变化,s2中第一层数据也不跟着改变

python3笔记十四:python可变与不可变数据类型+深浅拷贝的更多相关文章

  1. python3笔记十:python数据类型-Tuple元组

    一:学习内容 元组概念 元组创建.访问.删除 元组操作 元组方法 二:元组概念 1.本质:是一种有序集合 2.特点:与列表非常相似.一旦初始化就不能修改.使用小括号 三:元组创建 1.创建空元组 tu ...

  2. python学习笔记(十四)python实现发邮件

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...

  3. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  4. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  5. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  6. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...

  7. 二十四. Python基础(24)--封装

    二十四. Python基础(24)--封装 ● 知识结构   ● 类属性和__slots__属性 class Student(object):     grade = 3 # 也可以写在__slots ...

  8. 十四. Python基础(14)--递归

    十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...

  9. day2学python 数据类型+深浅拷贝+循环

    数据类型+深浅拷贝+循环 别的语言的数组 python不用定义 直接使用 color=['红','橙','黄','绿','青','蓝','紫'] print(color[1:3]) //打印[1,3) ...

随机推荐

  1. k8s自签TLS证书

    自签TLS证书 TLS证书用于进行通信使用,k8s组件需要的证书有: 第一步:安装证书生成工具cfssl 在这之前需要先建立一个目录来存放安装的工具mkdir ssl,后面将安装的工具移动到各自的目录 ...

  2. 部署k8s集群之环境搭建和etcd单节点安装

    环境搭建以及etcd 单节点安装过程 安装之前的环境搭建 在进行k8s安装之前先把虚拟机准备好,这里准备的是三台虚拟机 主机名 ip地址 角色 master 172.16.163.131 master ...

  3. 27 Python 装饰器

    一. 我们先写一个玩游戏的步骤 # def play(): # print("双击LOL") # print("选择狂战士") # print("进草 ...

  4. shell 里面的计算

    ---恢复内容开始--- 关于shell里面的计算其实早在接触LINUX的时候就已经接触到了.每次在运用的时候却是在网上到处找,所以觉得花点时间好好研究下. 首先了解下常用的算数运算符号: +  - ...

  5. 64位Win7安装Oracle12C临时位置权限错误解决方案

    今天装备安装Oracle12C体验一下,结果遇到问题:请确保当前用户具有访问临时位置所需的权限,无法继续安装,上网查了一下,解决方案如下:  第一步:  控制面板>所有控制面板项>管理工具 ...

  6. 韦东山嵌入式Linux学习笔记02--如何给开发板烧录程序

    购买韦东山嵌入式开发板jz2440 v3会标配两根usb线和一根网线,OpenJtag需要单独购买, 我暂时还没买到该工具. 下面介绍usb烧录以及通过网线烧录程序. 1.usb烧录程序: 借助DNW ...

  7. kubernetes如何访问pod服务

    一.通过 Service 访问 Pod: 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 control ...

  8. 背包 || NOIP 2018 D1 T2 || Luogu P5020 货币系统

    题面:P5020 货币系统 题解: 显然要求的货币系统是当前货币系统的子集时答案会更优,于是考虑从当前货币系统中删数 一个大数如果能被其他小数表示出来,它就可以去掉 把数据排个序去个重,然后直接背包 ...

  9. zabbix的简单操作(proxy代理分布式监控)

    分布式监控 作用:分担压力,减轻负载,多机房监控 通过zabbix proxy的搭建,zabbix server可以远程从proxy获取到数据,这里的环境相当于zabbix server具有一个公网i ...

  10. VCL界面开发必备装备!DevExpress VCL v19.1.5你值得拥有

    DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...