Day03 数据类型转换 +墨子

学习python的第三天

在这里插入图片描述
墨子
墨子,名翟,春秋战国之际的思想家,墨家的创始人。
墨子反对不义之战,广收门徒周游列国,在百家争鸣的战国产生了很大的影响。墨子还是一位高明的工匠,谙熟各种机械工程技艺,为了止楚攻宋,曾与名匠公输般(鲁班)进行攻防演练,使对方折服。他还详细阐述过各种攻受器械和工程设施的构建技术,对后世军事有着极大影响。 墨家弟子根据其生平事迹语录,整理了《墨子》一书传世。内容广博,涉及政治,军事,科技,哲学,是研究墨子的重要史料

强制类型转换 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)  # Flash

res = (var1)  # True
res = (var2)  # True
 
'''
bool 类型为假的十种情况
0, 0.0, False, 0j, '', [], (), set{}, {} ,None
 
None 是 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  #2338256962704

a = 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版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候,
    根据字面顺序重新排序,所以看起来像有序,但本质上无序

'''


热门文章

暂无图片
编程学习 ·

毛毛爸爸手记-2

http://blog.sina.com.cn/s/blog_4bf99d0601000825.html今天,毛爸从天鹅和鸭子的故事说起。从前......一只美丽的天鹅有一天落在地上时,看见了一只健壮的鸭子,她立刻被这只帅气的鸭子所打动,她惊诧于鸭子不同于她同类的模样,不同于她同类气质,是那么的有型,那么的另类。…
暂无图片
编程学习 ·

期末复习、化学反应工程科目(第四章)

@Author:Runsen @Date:2020/7/1人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难,奋勇前行,不忘初心,砥砺前行,人生定会有所收获,不留遗憾 (作者:Runsen )作者介…
暂无图片
编程学习 ·

react组件返回上级时,记录上级组件状态

最近开发项目中,做管理后台,很多表格列表,有搜索条件,有分页;在跳转到详情页面,返回时,列表组件重新渲染,之前的搜索条件,分页什么的,都没有记住;还需要重新选,点击,交互体验很不好。1.这里想到2两个办法,一个是吧搜索条件存到缓存中;每次进行读写;条件太多,或…
暂无图片
编程学习 ·

GPU与深度学习

GPU与深度学习一.为什么深度学习要使用CPU 深度学习:深度学习是模拟人脑神经系统而建立的数学网络模型,最大特点是需要大数据来训练,也就需要大量的并行的重复计算。 GPU:CPU的全称是Central Processing Unit,GPU的全称是Graphics Processing Unit。在命名上,这两种器件…
暂无图片
编程学习 ·

setuptools制作whl包实战讲解(一)

什么是 whl .whl格式的文件本质上是一个压缩包,里面包含了py文件,以及经过编译的pyd文件。使得可以在不具备编译环境的情况下,选择合适自己的python环境进行安装。我们可以使用我们非常熟悉的pip install 来安装whl包。 如: pip install mask_detect_v1.0.whl如何制作whl包…
暂无图片
编程学习 ·

CMMI 2.0 和 1.3

CMMI2.0与1.3在组织形式区别很大,很多PA和之前的不太一样了,而且PA在2.0中叫实践域,1.3中叫过程域。不过其实核心内容没有大的变化,只是相关内容的位置进行了调整,部分描述进行了优化。目前是过渡阶段,2.0和1.3都可以评估,但截止日期之后就只适用2.0了。1.3评估的截止日…
暂无图片
编程学习 ·

tensorflow 中tf.strided_slice和tf.slice的区别

函数:tf.slice(inputs, begin, size, name) 作用:从列表、数组、张量等对象中抽取一部分数据begin和size是两个多维列表,他们共同决定了要抽取的数据的开始和结束位置 begin表示从inputs的哪几个维度上的哪个元素开始抽取 size表示在inputs的各个维度上抽取的元素个数import…
暂无图片
编程学习 ·

【机器学习】图神经网络

图神经网络是一种直接在图结构上运行的神经网络。GNN 的一个典型应用是节点分类。本质上,图中的每个节点都与一个标签相关联,我们的目的是预测没有 ground-truth 的节点的标签。 将node编码到特征空间:将卷积神经网络中的方法泛化到graph中,用邻居节点来update该节点的feat…
暂无图片
编程学习 ·

01:渗透测试及Kali Linux介绍

文章目录kali linux 渗透测试介绍安全问题的根源安全目标渗透测试渗透测试标准渗透测试项目渗透测试误区KALIKALI LINUX 策略 kali linux 渗透测试 介绍 安全问题的根源分层思想的优劣OSI采用了分层的结构化技术,共分七层,物理层、数据链路层、网络层、传输层、会话层、表示层…
暂无图片
编程学习 ·

jdk源码解析二之HashMap

这里写自定义目录标题HashMapputremovereplaceget扩容resize迭代器总结什么时候采用红黑树?为什么每次扩容后,是2的幂次方?为什么扩容后,相同的在原位置保存,而不同的则当前索引+之前原位置索引保存?为啥用尾插法?为什么线程不安全? HashMap HashMap的loadFactor为什么是0…
暂无图片
编程学习 ·

ESP32使用MicroPython快速开发

Python基本语句一:Print语句:1. 输出字符串和数字>>>print("runoob") # 输出字符串runoob>>> print(100) # 输出数字100>>> str = runoob>>> print(str) # 输出变量runoob>>> L = [1,2,a] …
暂无图片
编程学习 ·

专业外语学科复习总结

文章目录英译汉选择题Unit 1-ExcerciseUnit 2-ExerciseUnit 3-ExerciseUnit 4- ExerciseUnit 5- ExerciseUnit 6- ExerciseUnit 7- Exercise阅读题作文阶段性巩固练习(unit1~3)阶段性巩固练习(unit4~5)阶段性巩固练习(unit6~7) 英译汉 OS also manage files on computer hard d…
暂无图片
编程学习 ·

springboot中application.yml配置中常用的配置信息

server:port:8001mybatis:config-location:classpath:mybtais/mybatis.cfg.xml #mybatis配置文件所在路径typ-aliases-package:com.auguigu.springcloud.entities #所有Entity别名类所在包mapper-location:- classpath:mybatis/mapper/**/*.xml #mapper映射文件spring:app…
暂无图片
编程学习 ·

『互联网架构』软件架构-mysql主从(二)

通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。 为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。 而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。源码:https://…
暂无图片
编程学习 ·

【线性代数(2)】n阶行列式三种定义

n阶行列式1. 回顾2. n阶行列式2.1 第一种定义(按行展开)2.2 表示方式2.3 举个例子2.4 三角行列式2.5 第二种定义(按列展开)2.6 第三种定义(随意展开)2.7 习题举例 1. 回顾 先回顾一下之前的三阶行列式,看一下其中的规律 ∣a11a12a13a21a22a23a31a32a33∣=a11∗a22∗a33+…
暂无图片
编程学习 ·

探秘隐藏在对象中的get和set方法

不知道大家有没有注意过对象中的一些通用方法,例如所有所有的对象都有 toString、constructor 等等一些方法。 当然如果要仔细看的话,大家可以: var a = {};console.log(a);我们可以清晰的看到他有很多的内置方法。当然,也可以看到最下面有两个比较怪的方法 get 和 set ,只…
暂无图片
编程学习 ·

什么是“新基建”?

近日,“新型基础设施建设”成为热词。那么,何为“新基建”?“新基建”缘何收到关注?“新基建”将改变什么?何为“新基建”?基础设施有“传统”与“新型”之分。传统基础设施:主要包括铁路、公路、机场、桥梁等。新型基础设施:与高新技术发展紧密相连,是发展信息化、智…