python_0基础开始_day06
第六节
1.小数据池
==,is,id
==:查看等号两边的值是否一样
a = 9b = 9print(a == b) # 返回Truec = "dog"d = "dog"print(c == d) # 返回Truee = [1,2,3]f = [1,2,3]print(e == f) # 返回True
is:判断两边值的内存地址是否一样。
a = 9b = 9print(a is b) # 返回True
id:查看值的内存地址
a = 9b = 9print(id(a),id(b)) # 返回1447461232 1447461232
小数据和代码块
小数据池:这个在cmd终端中测试
字符串:
纯字母和数字的时候长度任意,内存地址相同。
Python36纯字母和数字乘法总长度 <= 20 内存地址相同。
Python37纯字母和数字乘法总长度 <= 4096 内存地址相同。
中文和特殊符号乘法的时候只能乘以 0 内存地址相同
int:
-5 ~ 256
a = -6b = -6print(a is b) # Falsec = 257d = 257print(c is d) # False
布尔值:
True
False
代码块支持:一个文件,一个函数,一个模块,一个类,终端中一行就是一个代码块
字符串:
定义字符串的时候内容,长度任意内存地址相同。
字符串进行乘法的时候总长度 <=20 内存地址相同。
中文,特舒符号 乘法的时候只能乘以1或 0
int:
-5~正无穷
相同的数字内存地址相同
a = -6b = -6print(a is b) # Falsec = 257d = 257print(c is d) # True
布尔值:
相同的内存地址相同
小数据池,代码块同在的情况下先执行代码块
驻留机制: 节省内存空间,提升效率(减少了开辟空间和销毁空间的耗时)
2.集合
Python 的基础数据类型之一
集合 ----- set
定义方式:s = {1,2,3.4,5,6,7,8,9}
空集合:s = set()
天然去重
删的重复的是后面的,先读取不删除
元素要求是不可变的并且还是唯一的,我们就利用它是唯一来做去重
会自动排序输出的集合,从左至右,由小到大
无序,可变的数据类型
frozenset来保存数据
s = frozenset(["赵本六", "刘大脑袋", "谢广坤", "老四"])dic = {s:'123'} # 可以正常使使用了print(dic)
增加
集合名.add("元素")
集合名.update("asdaf"),迭代添加,而且是随机进添去的
print(set("xuyu")) ,只能添加到空集合
s = set()s.add("alex") # 直接添加print(s) # {'alex'}s.update("wusir") # 迭代添加print(s) # {'s', 'r', 'alex', 'i', 'u', 'w'}print(set("xuyu")) # {'y', 'u', 'x'}
删除
集合名.remove(元素)
s = {1,2,3,4,5,6,7,8,9,0}print(s.remove(3))# 通过元素删除print(s.clear())# 留下的是空集合print(s.pop())#随机删除,默认因该是删除所有元素中最小的
集合名.clear()
集合名.pop()
改
删了重新添加
查
for循环
# set是一个可迭代对象. 所以可以进for循环 for el in s: print(el)
s1 = {"刘能", "赵四", "谢广坤"} s2 = {"刘科长", "王大拿", "谢广坤"} # 交集 # 两个集合中的共有元素 print(s1 & s2) # {'谢广坤'} print(s1.intersection(s2)) # {'谢广坤'} # 并集 print(s1 | s2) # {'刘科长', '刘能', '王大拿', '谢广坤', '赵四'} print(s1.union(s2)) # {'刘科长', '刘能', '王大拿', '谢广坤', '赵四'} # 差集 print(s1 - s2) # {'刘能', '赵四'} 得到第1个中单独存在的 print(s1.difference(s2)) # {'刘能', '赵四'} # 反交集 print(s1 ^ s2) # 两个集合中单独存在的数据 {'刘科长', '王大拿', '赵四', '刘能'} print(s1.symmetric_difference(s2)) # {'刘科长', '王大拿', '赵四', '刘能'} s1 = {"刘能", "赵四"} s2 = {"刘能", "赵四", "皮长山"} # 子集 print(s1 < s2) # set1是set2的子集吗? True print(s1.issubset(s2)) # 超集(父集) print(s1 > s2) # set1是set2的超集吗? False print(s1.issuperset(s2))
3.深浅拷贝
浅拷贝copy
只拷贝第一层元素的地址,只有修改第一层的时候源数据不受影响
给可变数据类型进行添加的时候源数据会受影响
= 是修改 .append是添加
copy适用于各种类型的数据
切片可以适用于列表, 例 [:]
赋值操作:将多个变量指向一个同一个内存地址就是赋值
a = [1,2,3,4] b = a print(id(a),id(b)) # 38086472 38086472 print(a is b)# True c = [1,2,3,4,5] d = c c.append(6) print(d)# [1, 2, 3, 4, 5, 6] 赋值元素发生改变,会直接输出改变后的 e = [1,2,3,4,5] f = e e.append([6,7,8]) print(f)[1, 2, 3, 4, 5, [6, 7, 8]]# 赋值元素发生改变,会直接输出改变后的
copy操作
#_________copy q = [11,22,33,44,55,[66,77,88]] w = q.copy() # w = q[:] # 浅拷贝 print(id(q),id(w)) # 40118088 41916936地址发生改变,相当于新开辟空间,链接了[11,22,33,44,55] print(q is w) # False print(id(q[-1][0]))# 1369409680 print(id(w[-1][0]))# 1369409680 地址一致 q.append(9) print(q)# [11, 22, 33, 44, 55, [66, 77, 88], 9] print(w)# [11, 22, 33, 44, 55, [66, 77, 88]] w先拷贝的q列表,没拷贝到添加后的 a = [1,2,3,[4,5,6,[9,10]],67] b = a[:] b[-1] = 7 print(a) #[1,2,3,[4,5,6,[9,10]],67] 不变 print(b) # [1, 2, 3, [4, 5, 6, [9, 10]], 7] 多了一个7 # 上下两种情况,赋值不会发生值的变化,添加会发生改变 a = [1,2,3,[4,5,6,[9,10]],67] b = a[:] b[-2][-1].append(11) print(a)# [1, 2, 3, [4, 5, 6, [9, 10, 11]], 67] print(b)# [1, 2, 3, [4, 5, 6, [9, 10, 11]], 67]
2.深拷贝 copy.deepcopy(变量名)
不可变数据类型内存地址共用,可变数据类型新开辟一个空间
import copy # 导入 copy模块 a = [1,2,[3,4],5,6] b = copy.deepcopy(a) print(id(a[-3]))# 42293000 print(id(b[-3]))# 42294408 print(a)#[1, 2, 3, [4, 5], 6] print(b)#[1, 2, 3, [4, 5], 6] print(a == b)# True print(id(a),id(b))# 39933896 39935176 print(a is b)# Galse
python_0基础开始_day06的更多相关文章
- python_0基础学习_day02
第二节 一,while while也称为无限循环.死循环 while 条件: 缩进 循环体 应用领域:音乐播放:单曲循环,列表循环,随机播放(也是有规律的) 登陆界面:…… 数学计算:1~100的和, ...
- python_0基础学习_day01
Python是一门动态解释型的强类型定义语言 一.变量 变量命名规则 由数字.字母.下划线组成 不能以数字开头 要具有描述性 要区分大小写 禁止使用python的关键字(在pycharm中关键字明明变 ...
- python_0基础开始_day07
第七节 1,基础数据类型补充 str: print(str.capitalize()) —— 首字母大写 print(str.title()) —— 每个单词的首字母大写 print(str.swap ...
- python_0基础开始_day03
第三节 一.整形和布尔值的转换 int整型 python3: 全部都是整型 python2: 整型,长整型long 十进制转换二进制 # 将十进制的168转换为二进制 #得出结果 将十进制的168转 ...
- python_0基础开始_day05
第五节 一.字典 python的数据结构之一 字典 —— dict 定义:dic = {"key":"dajjlad"} 作用:存储数据,大量,将数据和数据起到 ...
- python_0基础开始_day04
第四节 一.列表 list 数据类型之一,存储大量的,不同类型的数据 列表中只要用逗号隔开的就是一个元素 有序可变的. 1.1列表的索引 列表和字符串一样也拥有索引,但是列表可以修改: lst = [ ...
- python_0基础开始_day13
第十三节 一,匿名函数 匿名函数 == 一行函数 lambda == def == 关键字 函数体中存放的是代码 生成器体中存放的也是代码 就是yield导致函数和生成器的结果不统一 lambda x ...
- python_0基础开始_day12
第十二节 一,生成器 生成器的核心:生成器的本质就是迭代器 迭代器是python自带的 生成器是程序员自己写的一种迭代器 在python中有三种方式来创建生成器: 基于函数编写 推导式方式编写 pyt ...
- python_0基础开始_day11
第十一节 一,函数名的第一类对象 函数名当作值,赋值给变量 print(函数名) 查看看书的内存地址 函数名可以当作容器中的元素 lis = []dic = {}def func(): prin ...
随机推荐
- AtCoder AGC005E Sugigma: The Showdown (博弈论)
题目链接 https://atcoder.jp/contests/agc005/tasks/agc005_e 题解 完了真的啥都不会了-- 首先,显然如果某条A树的边对应B树上的距离大于等于\(3\) ...
- AtCoder AGC014E Blue and Red Tree (启发式合并)
题目链接 https://atcoder.jp/contests/agc014/tasks/agc014_e 题解 完了考场上树剖做法都没想到是不是可以退役了... 首先有一个巨难写的据说是\(O(n ...
- 关于一次同余方程的一类解法(exgcd,CRT,exCRT)
1.解同余方程: 同余方程可以转化为不定方程,其实就是,这样的问题一般用拓展欧几里德算法求解. LL exgcd(LL a,LL b,LL &x,LL &y){ if(!b){ x=; ...
- vue绑定样式
使用三目运算符绑定样式 本来以为使用vue模版写法,在绑定单个样式,也就是一个class类名的时候可以直接书写,就像这样 <div id="app"> <div ...
- Python代码整洁之道(一)
很多新手在开始学一门新的语言的时候,往往会忽视一些不应该忽视的细节,比如变量命名和函数命名以及注释等一些内容的规范性,久而久之养成了一种习惯.对此呢,我特意收集了一些适合所有学习 Python 的人, ...
- flask 第五篇
需求: 1. 用户名: oldboy 密码: oldboy123 2. 用户登录成功之后跳转到列表页面 3. 失败有消息提示,重新登录 4.点击学生名称之后,可以看到学生的详细信息 后端: from ...
- 邻居子系统输出 之 neigh_output、neigh_hh_output
概述 ip层在构造好ip头,检查完分片之后,会调用邻居子系统的输出函数neigh_output进行输出,输出分为有二层头缓存和没有两种情况,有缓存时调用neigh_hh_output进行快速输出,没有 ...
- linux开启数据库远程连接
1.阿里云开启数据库端口 3306 2. 修改 Mysql-Server 用户配置 mysql -uroot -p(注意此用户必须要有最高级权限才行 默认root用户) mysql> USE m ...
- 在linux下通过ssh运行X图形软件
服务器端:编辑/etc/ssh/sshd_config中的以下内容启用AllowTcpForwarding启用X11Forwarding将X11DisplayOffset设定为10. 启用X11Use ...
- Linux搭建PHP环境(LAMP)
//安装Apache的命令 # yum install httpd //启动Apache的命令 # service httpd start //安装MySQL的命令 # wget http://dev ...