day3:强制类型转换&自动类型转换&变量缓存机制
1.Number的强制类型转换(int,float,bool,complex)
1.int 强制转换成整形
float可以转化成int
bool可以转化成int
str(形如"123")可以转化成int
complex不可以转化成int
str(形如"abc123")不可以转化成int
2.float 强制转换成浮点型
int可以转化成float
bool可以转化成float
str(形如"123")可以转化成float
3.complex 强制转换为复数
int可以转化成complex
float可以转化成complex
bool可以转化成complex
str(形如"123")可以转化成complex
str(形如"abc123")不可以转化成complex
4.bool 强制转换成布尔型
bool类型为假的十种情况:
0, 0.0, False, 0j, '', [], {}, (), set(), None
None 是python的关键字,代表空的,什么也没有,一般用来做初始化操作
5.总结:
int() float() bool() complex()
默认创建一个该数据类型的值
res = int() # 0
res = float() # 0.0
res = bool() # False
res = complex() # 0j
print(res)
---------------------------------------
2.Number的自动类型转换(int,float,bool,complex)
精度从低向高进行转换 : bool -> int -> float -> complex
自动类型转换,默认从低精度向高精度进行转换(从低到高)
可以实现以下几种自动类型转换:
1.bool+int
2.bool+float
3.bool+complex
4.int+float
5.int+complex
6.float+complex
--------------------------------------------
3.str,list,tuple,set的强制类型转换
1.str的强制类型转换
所有容器和Number,str都可以强制转换成功
强转成字符串,无非就是在原有的数据的基础上两边套上引号
repr()作用: 可以原型化输出字符串,不转义字符(显示出引号)
2.list的强制类型转换
(1)如果是字符串,会把每一个字符单独的作为一个元素放到列表中
(2)如果是字典,只保留键,形成一套新的列表
(3)如果是其他的容器,只是单纯的在原有数据的基础上换上[]
3.tuple的强制类型转换
(1)如果是字符串,会把每一个字符单独的作为一个元素放到元组中
(2)如果是字典,只保留键,形成一套新的元组
(3)如果是其他的容器,只是单纯的在原有数据的基础上换上()
4.set的强制类型转换
(1)如果是字符串,会把每一个字符单独的作为一个元素放到集合中(无序,自动去重)
(2)如果是字典,只保留键,形成一套新的集合
(3)如果是其他的容器,只是单纯的在原有数据的基础上换上{}
5.思考:如何掉列表中所有重复的数据
思路:先用集合的自动去重去掉列表中重复的元素,在将集合转回列表
解法:
lst = ['a','b','c','d','d','d',1,2]
res = list(set(lst))
print(res)
-------------------------------------------
4.dict的强制类型转换
1.二级容器:包括二级列表,二级元组,二级集合,二级字典。
2.多级容器:3.4.5.6或更高级的容器,获取里面的值如下所示。
# 五级容器
container = [10,20,(1,2,3,{"a":1,"b":{"c":2,"d":[3,4,"success "]}})]
# 获取success
res1 = container[-1]
print(res1) # (1,2,3,,{"a":1,"b":{"c":2,"d":[3,4,"success "]}}
res2 = res1[-1]
print(res2) # {"a":1,"b":{"c":2,"d":[3,4,"success "]}}
res3 = res2["b"]
print(res3) # {"c":2,"d":[3,4,"success "]}
res4 = res3["d"]
print(res4) # [3,4,"success "]
res5 = res4[-1]
print(res5) # success
# 五步合成一步
res = container[-1][-1]["b"]["d"][-1]
print(res) # bingo
3.等长的二级容器:里面的元素都是容器,并且容器里面的元素个数都相同
lst = [(1,2,3) , [4,5,6]]
lst = [(1,2) , [3,4]]
4.dict 强制转换成字典:强转成字典时 , 必须是等长的二级容器,里面的元素个数是2个
(1) 外层是列表或者元组或者集合,里面的容器是元组或者列表(推荐)
lst = [("a",1),["b",2]]
tup = (("c",3),["d",4],)
setvar = {(1,2),(3,4),("a1",3),("b2",4)}
res = dict(lst) # {'a': 1, 'b': 2}
res = dict(tup) # {'c': 3, 'd': 4}
print(res)
(2) 如果里面是集合,语法上允许,但是有局限性(不推荐)
lst = [{"a",1},{"b",2}] # 因为集合无序,不符合定义的本意,不推荐使用
print(dict(lst))
(3) 如果使用字符串,语法上允许,但是有局限性(不推荐)
lst = [("a",1),"a2"] # 字符串长度只能2个
lst = [("a",1),"a123"] error
print(dict(lst))
-------------------------------
5.变量的缓存机制
机制: 在Python3.7和Python3.8中,只有两个值相同,就只开辟一个空间
Number部分:
1.对于整型而言,-5~正无穷范围内的相同值id一致
2.对于浮点数而言,非负数范围内的相同值id一致
3.布尔值而言,值相同情况下,id一致
4.复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)
容器类型部分:
5.字符串 和 空元组 相同的情况下,地址相同
6.列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]
day3:强制类型转换&自动类型转换&变量缓存机制的更多相关文章
- python 基础之自动类型转换和强制类型转换
一:自动类型转换 自动类型转换注意针对Number数据类型来说的 当2个不同类型的数据进行运算的时候,默认向更高精度转换 数据类型精度从低到高:bool int float complex #关于bo ...
- C语言:数据类型转换 自动转换 强制转换
数据类型转换就是将数据(变量.数值.表达式的结果等)从一种类型转换为另一种类型. 自动类型转换 自动类型转换就是编译器默默地.隐式地.偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生.1 ...
- day3 python数据类型转换及变量的缓存机制
类型转换 1,强制类型转换 1.1 number的转换(int,float,bool,complex) num1 = 10 num2 = 10.6 num3 = True num4 = 3 + 4j ...
- python小白——进阶之路——day2天-———变量的缓存机制+自动类型转换
# ###同一文件,变量的缓存机制 ''' -->Number 部分 1.对于整型而言,-5~正无穷范围内的相同值 id一致 2.对于浮点数而言,非负数范围内的相同值 id一致 3.布尔值而言, ...
- JavaScript中判断变量类型最简洁的实现方法以及自动类型转换(#################################)
这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了type ...
- c#小灶——自动类型转换和强制类型转换
前面已经认识了不同的数据类型,你们有没有尝试过让不同的数据类型进行运算呢? ; double b = a; Console.WriteLine(b); 运行结果是:1 我们把一个整型的变量赋值给了一个 ...
- JS类型转换(强制和自动的规则)
显式转换 通过手动进行类型转换,Javascript提供了以下转型函数: 转换为数值类型:Number(mix).parseInt(string,radix).parseFloat(string) 转 ...
- Java的自动拆装箱与Integer的缓存机制
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10832303.html 一:基本类型与包装类型 我们知道,Java有8大基本数据类型,4整2浮1符1 ...
- JavaScript系列文章:自动类型转换
我们都知道,JavaScript是类型松散型语言,在声明一个变量时,我们是无法明确声明其类型的,变量的类型是根据其实际值来决定的,而且在运行期间,我们可以随时改变这个变量的值和类型,另外,变量在运行期 ...
随机推荐
- redis配置文件中slave-serve-stale-data的解释
redis.conf文件中可以看到slave-serve-stale-data这个参数,作用是什么? 原文解释: # When a slave loses its connection with th ...
- C# 人脸识别库
.NET 人脸识别库 ViewFaceCore 这是基于 SeetaFace6 人脸识别开发的 .NET 平台下的人脸识别库这是一个使用超简单的人脸识别库这是一个基于 .NET Standard 2. ...
- IntelliJ IDEA 2018.3.6 安装、激活 JRebel
在 IntelliJ IDEA 2018.3.6 中安装## JRebel 1.代开 IDEA 开发工具,然后用快捷键 Ctrl+Alt+S 打开设置并搜索 jrebel 插件 2.安装 jrebel ...
- 深入理解JVM(③)虚拟机的类加载过程
前言 上一篇我们介绍到一个类的生命周期大概分7个阶段:加载.验证.准备.解析.初始化.使用.卸载.并且也介绍了类的加载时机,下面我们将介绍一下虚拟机中类的加载的全过程.主要是类生命周期的,加载.验证. ...
- Python实用笔记 (19)面向对象编程——访问限制
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的na ...
- Spring Redis开启事务支持错误用法导致服务不可用
1.事故背景 在APP访问服务器接口时需要从redis中获取token进行校验,服务器上线后发现一开始可以正常访问,但只要短时间内请求量增长服务则无法响应 2.排查流程 (1)使用top指令查看C ...
- spring quartz 每30分钟执行一次cronExpression表达式怎么写
<cron-expression>0 0/30 * * * ?</cron-expression>:每隔30分钟 <cron-expression>0 0/15 ...
- 洛谷 P4822 [BJWC2012]冻结
之前没学分层图,所以先咕了一下hiahiahia. 学完分层图了回来水写题解了. 这道题要用分层图来解.分层图就是在我们决策的时候,再建k层图,一共k+1层,层与层之间是有向边(这个很重要的),权值为 ...
- C# 自定义常用代码段快捷键
不断更新中... 分享地址:http://pan.baidu.com/s/15oE0X
- Redis系列(十二):数据结构SortedSet跳跃表中基本操作命令和源码解析
1.SkipList Redis的sortedSet数据结构是有序不重复的(索引为唯一的,数据(score)却可以重复), 跳表是redis的一个核心组件,也同时被广泛地运用到了各种缓存地实现当中,它 ...