强制类型转换 Number (int float bool complex )

var1  = 13
var2 = 13.789
var3 = True
var4 = 5-7j
var5 = "9988"
var6 = "abcd4567"

(1) 强制类型转换成整型 int

res = int(var2)  # 13
res = int(var3) # True => 1  False => 0
#res = int(var4) # error (TypeError: 复数不能转化为整型)
res = int(var5) # 9988
# res = int(var6) # error
print(res,type(res))

(2) 强制转换成浮点型 float

res = float(var1) # 13.0
res = float(var3) #1.0
res = float(var4) # error
res = float("9988") # 9988.0
print(res,type(res))

(3) 强制转换为复数 complex

res = complex(var1) # 13 + 0j
res = complex(var2) # 14.789 + 0j
res = complex(var3) # True 1 + 0j  Flash 0j
res = complex(var5) # 9988 +0j  #res  = complex(var6) # error

(4) 强制转换成布尔值 bool (***)

res = bool(None)  # Flashres = (var1)  # True
res = (var2)  # True'''
bool 类型为假的十种情况
0, 0.0, False, 0j, '', [], (), set{}, {} ,NoneNone 是 Python的关键字,代表空的,什么都没有,一般用来做初始化操作
a1 = None
b1 = None'''

总结:

 # int() float() bool() complex()# 默认创建一个该数据类型的值res = int()res = float()res = bool()res = complex()print(res)

自动类型转换 Number (int float bool complex)

  • 精度从低到高进行转换 : bool-> int -> float -> complex
  • 自动类型转换,默认从低精度向高精度进行转化 (从低到高)
# 1 .bool + int
res = True + 100 # 1 + 100
print(res )# 2. bool + float
res = True + 4.415  # 1.0 + 4.415
print(res)# 3. bool + complex
res = True + 3-6j  #  1 + 0j + 3-6j
print(res)# 4. int + float
res = 5 + 4.38  # 5.0 + 4.38# 5. int + complex
res = 10 + 4-3j # 10 +0j + 4-3j
print(res)# 6. float + complex res = 5.68 + 5-100j # 5.68+0j + 5 - 100j
print(res)

容器类型的强制转换 (str list tuple set dict)

strvar = '雷霆嘎巴,无情呼啦少,ZB'
listvar = ["曹晨光","温子月","吴洪昌"]
tuplevar = ("高岳峰","葛龙","孙京华","白星")
setvar = {"李志辉","马冬梅","刘新伟"}# 推荐大家使用变量命名的字符串作为字典的键;
dictvar = {"lzh":"气质非凡","mdm":"高大威猛","lxw":"气宇轩昂"}
intvar = 8888

str (容器 / number 都可以转)

  • 强制转换为字符串,无非就是在原有的数据的基础上两边套上引号 “”
res = str(listvar) #  "['曹晨光', '温子月', '吴洪昌']"
res = str(intvar)   #  '8888'
print(res , type(res))

list 强制转换成列表

'''
如果是自字符串,会把每一个字符单独的作为一个元素放到列表中
如果是字典, 会只保留键,形成一个新的列表
如果是其他的容器,只是单纯的在原有数据的基础上换上[]
'''
res = list(strvar)    # ['雷', '霆', '嘎', '巴', ',', '无', '情', '呼', '啦', '少', ',', 'Z', 'B']
res = list(tuplevar)  # ['高岳峰', '葛龙', '孙京华', '白星']
res = list(setvar)    # ['刘新伟', '马冬梅', '李志辉']
res = list(dictvar)   # ['lzh', 'mdm', 'lxw']
print(res , type(res))

tuple : 强制转换成元组 (与列表相似)

'''
如果是字符串,会把每一个字符单独的作为一个元素放到元组中
如果是字典,只保留键,形成一套新的元组
如果是其他的容器,只是单纯的在原有数据的基础上换上()'''
res = tuple(strvar)
res = tuple(listvar)
res = tuple(setvar)
res = tuple(dictvar)
print(res , type(res))

set : 强制转换成集合 (自动去重)

'''
如果是字符串,会把每一个字符单独的作为一个元素放到集合中(无序,自动去重)
如果是字典,只保留键,形成一套新的集合
如果是其他的容器,只是单纯的在原有数据的基础上换上{}
'''res = set(strvar)
res = set(listvar)
res = set(dictvar)
print(res)

去掉列表中所有重复的数据 (转换成集合,在转换回来)

lst = ['a','b','c','d','d','d',100,200]
res = list( set(lst) )
print(res)

dict 强制转换成字典

''' 强制转换成字典时,必须是等长的二级容器,每个容器里面的元素个数是2个 '''#(1) 外层是列表或者元组或者集合时,里面的容器是元组或者列表(集合不推荐)
lst = [('a',1),['b',2]]     # {'a': 1, 'b': 2}
tup = (('c',3),['d',4])     # {'c': 3, 'd': 4}
setvar = {(1,2),(3,4),('f3',3),('f4',4)}  # {1: 2, 'f4': 4, 'f3': 3, 3: 4}
#(2) 如果里面是集合,语法上允许,但是有局限性(不推荐)lst = [{'a',333},{'zz',5}] # 因为集合无序,不允许定义的本意,不推荐使用
print(dict(lst))
#(3) 如果使用字符串,语法上正确,但是有局限性(不推荐)
lst = [('a',1),'b2']  # 字符串长度只能是两个# lst = [("a",1),"b23"] error   字符串长度三个'''

总结
str() list() tuple() dict() set()
默认创建一个该数据类型的值

字典强转

# 二级容器(list tuple set dict)# 二级列表
listvar = [1,2,[3,4]]# 二级元组
tuplevar = (5,6,(7,8))# 二级集合 (集合里面)
setvar = {10,11,(12,13)} # 集合里面不能嵌套集合# 二级字典
'''
dictvar = {'a':1 , 'b':{'c':2,'d':4} }
# 获取4这个元素
res = dictvar('b') # {'c':2,'d':4}res1 = res['d'] # 4简写
res = dictvar['b']['d']'''# 五级容器
'''
container = [100,200,300,(1,2,3,4,{"a":1,"b":{"c":15,"d":[11,12,"bingo"]}})]
# 获取bingo
res1 = container[-1]
print(res1) # (1, 2, 3, 4, {'a': 1, 'b': {'c': 15, 'd': [11, 12, 'bingo']}})res2 = res1[-1]
print(res2) # {'a': 1, 'b': {'c': 15, 'd': [11, 12, 'bingo']}}res3 = res2["b"]
print(res3) # {'c': 15, 'd': [11, 12, 'bingo']}res4 = res3["d"]
print(res4) # [11, 12, 'bingo']res5 = res4[-1]
print(res5)# 简写一步
res = container[-1][-1]["b"]["d"][-1]
print(res) # bingo '''
# 简写一步
res = container[-1][-1]["b"]["d"][-1]
print(res) # bingo# 等长的二级容器: 里面的元素都是容器,并且容器里面的元素个数都相同
lst = [(1,2,3),[4,5,6]]
tup = ((7,8),[9,10])

变量的缓存机制 (仅针对于3.6版本)

'''
机制: 只有两个值相同, 就开辟一个空间
python 3.7
python 3.8
''' 

(1) --> Number 部分


# 1. 对于整型而言, -5 ~ 正无穷内的相同值id一致
var1 = 100  # id  1439599824
var2 = 100  # id  1439599824# -6  (id不同)
var1 = -6  #2338256962896
var2 = -6  #2338256962704a = b = 12 (id 相同)

(2) --> 对于浮点数而言,非负数范围内的相同值 id相同

# 负数
var1 = -5.76 # 2048696653120
var2 = -5.76 # 2048696654272
# 正数  (相同)
var1 = 1.23  #  2454093699520
var2 = 1.23  #  2454093699520
id(var1)

(3) --> 对布尔值而言,值相同情况下,id一致

var1 = True
var2 = False
print(id(var1),id(var2))

(4) --> 复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)

var1 = 3+4j
var2 = 3+4j
var1 = 90j   #  2589272341328
var2 = 90j   #  2589272341328
print(id(var1),id(var2))

(5) --> 容器类型部分

# 字符串 和 空元组 相同的情况下,地址相同
var1 = "你"
var2 = "你"
var1 = ()
var2 = ()
print(id(var1),id(var2))# 列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]
var1 = (1,2,3)
var2 = (1,2,3)
print(id(var1),id(var2))

哈希算法

'''
定义:  把不可变的任意长度值计算出固定长度的唯一值,这个值可正可负,可大可小,但长度固定该算法叫哈希算法(散列算法),这个固定长度值叫哈希值(散列值)
特点:  1.计算出来的值长度固定且该值唯一2.该字符串是密文,且加密过程不可逆
用哈希算法计算得到一个字符串的用意:例如: 比对两个文件的内容给是否一致例如:比对输入的密码和数据库存储的密码是否一致字典的键和集合中的值都是唯一值,不可重复:为了保证数据的唯一性,用哈希算法加密字典的键得到一个字符串。用哈希算法加密集合的值得到一个字符串。如果重复,他们都是后面的替换前面的。自动去重
版本:3.6版本之前都是 字典和集合都是无序的3.6版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候,根据字面顺序重新排序,所以看起来像有序,但本质上无序'''

Day03 数据类型转换相关推荐

  1. 数据类型转换pytorch

    du = torch.ones([2,2]) a = np.array([[1,2],[3,4]],dtype=np.float32) b = torch.from_numpy(a)#数据类型是不变的 ...

  2. tf.cast()数据类型转换

    tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32. cast定义: cast(x, ...

  3. Java中如何实现Date与String之间的数据类型转换

    String 数据类型转换成 Date String inputDate = "2021-04-11";Date outputDate = null;SimpleDateForma ...

  4. Java 数据类型转换

    学而时习之,温故而知新. 数据类型转换,先放一张图,了解数据类型 简单数据类型之间的转换又可以分为: 1 低级到高级的自动类型转换 2 级到低级的强制类型转换 3 包装类过渡类型转换. (有时候我们有 ...

  5. Java基础语法(一)注释,关键字,常量,变量,数据类型,标识符,数据类型转换...

    从今天开始,记录学习Java的过程.要学习Java首先得有环境,至于环境的安装我就不说了,百度有很多教程,比如:http://jingyan.baidu.com/article/20095761904 ...

  6. C/C++各种数据类型转换汇总

    以下是Windows/Linux系统中常用的C/C++各种数据类型转换汇总: #ifndef FBC_MESSY_TEST_DATA_TYPE_CONVERT_HPP_ #define FBC_MES ...

  7. Java类Demo中存在_Java中的数据类型转换

    先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...

  8. Php的if自动转换类型,php之数据类型自动转换,php之数据类型转换_PHP教程

    php之数据类型自动转换,php之数据类型转换 1:概述 ---php是一种弱类型的语言,它可以根据运行环境的变化而自动进行数据类型的转换 1.1转换成布尔类型的原则 以下值都将转换成布尔类型中的fa ...

  9. python数字类型转换函数_Python的数据类型转换函数

    玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...

最新文章

  1. cmd怎么实现Java你好_java环境配置以及如何在cmd窗口运行java代码
  2. 通过telnet命令查看memcache运行状态
  3. Swift学习--常量.变量.数据类型的使用(一)
  4. 华为ac配置radius认证服务器_合作生态 | 升腾威讯云系统与华为泰山服务器完成产品互认证...
  5. 对话框的MFC,一点回车就退出
  6. Oracle JDBC中的PreparedStatement占位符过多
  7. jenkins 远程启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  8. linux 链接文件 通配符,linux globbing文件通配符
  9. html5简介、选项输入框、表单元素分组、input新增属性及属性值
  10. html背景设置为彩色,CSS3 彩色网格背景
  11. 案例:回归分析-R实现
  12. python连接hive--Pyhive
  13. w10系统的服务器属性在哪,DNS设置在哪里、设置什么好?Win10电脑DNS设置指南
  14. 手机连接USB通过宽带免费上网
  15. Excel 2010 VBA 入门 087 数据处理之按单列汇总多个工作表
  16. 软件设计师中级复习小总结
  17. JDK1.8版本linux、Windows64下载
  18. 外仁内圣,以借得天下,以情御英雄
  19. kafka | 生产者压缩算法面面观
  20. 最小二乘法直线拟合及其Matlab实现

热门文章

  1. 软件测试发展前景进阶路线(最全面)
  2. matlab实现三分之一倍频程,三分之一倍频程程序
  3. Word下划线怎么打?速速get这5个实用方法!
  4. 如何用摄像头来测距(opencv)
  5. ***/BandwagonHost选择Linux操作系统的技巧
  6. VLC for Android源码下载和编译
  7. 工业场景知识图谱落地实战
  8. 如何做到精准引流获客?
  9. 计算机教育影片观后感,2020青少年法治教育片沉重的爱观后感大全
  10. 火狐插件restclient发送post请求