强制类型转换 Number (int float bool complex )
var1
= 13
var2
= 13.789
var3
= True
var4
= 5-7j
var5
= "9988"
var6
= "abcd4567"
(1) 强制类型转换成整型 int
res
= int(var2
)
res
= int(var3
)
res
= int(var5
)
print(res
,type(res
))
(2) 强制转换成浮点型 float
res
= float(var1
)
res
= float(var3
)
res
= float(var4
)
res
= float("9988")
print(res
,type(res
))
(3) 强制转换为复数 complex
res
= complex(var1
)
res
= complex(var2
)
res
= complex(var3
)
res
= complex(var5
)
(4) 强制转换成布尔值 bool (***)
res
= bool(None)
res
= (var1
)
res
= (var2
)
'''
bool 类型为假的十种情况
0, 0.0, False, 0j, '', [], (), set{}, {} ,None
None 是 Python的关键字,代表空的,什么都没有,一般用来做初始化操作
a1 = None
b1 = None
'''
总结:
res
= int()
res
= float()
res
= bool()
res
= complex()
print(res
)
自动类型转换 Number (int float bool complex)
精度从低到高进行转换 : bool-> int -> float -> complex自动类型转换,默认从低精度向高精度进行转化 (从低到高)
res
= True + 100
print(res
)
res
= True + 4.415
print(res
)
res
= True + 3-6j
print(res
)
res
= 5 + 4.38
res
= 10 + 4-3j
print(res
)
res
= 5.68 + 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
)
print(res
, type(res
))
list 强制转换成列表
'''
如果是自字符串,会把每一个字符单独的作为一个元素放到列表中
如果是字典, 会只保留键,形成一个新的列表
如果是其他的容器,只是单纯的在原有数据的基础上换上[]
'''
res
= list(strvar
)
res
= list(tuplevar
)
res
= list(setvar
)
res
= list(dictvar
)
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个 '''
lst
= [('a',1),['b',2]]
tup
= (('c',3),['d',4])
setvar
= {(1,2),(3,4),('f3',3),('f4',4)}
lst
= [{'a',333},{'zz',5}]
print(dict(lst
))
lst
= [('a',1),'b2']
'''
总结 str() list() tuple() dict() set() 默认创建一个该数据类型的值
字典强转
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
)
lst
= [(1,2,3),[4,5,6]]
tup
= ((7,8),[9,10])
变量的缓存机制 (仅针对于3.6版本)
'''
机制: 只有两个值相同, 就开辟一个空间
python 3.7
python 3.8
'''
(1) --> Number 部分
var1
= 100
var2
= 100
var1
= -6
var2
= -6
a
= b
= 12 (id 相同
)
(2) --> 对于浮点数而言,非负数范围内的相同值 id相同
var1
= -5.76
var2
= -5.76
var1
= 1.23
var2
= 1.23
id(var1
)
(3) --> 对布尔值而言,值相同情况下,id一致
var1
= True
var2
= False
print(id(var1
),id(var2
))
(4) --> 复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)
var1
= 3+4j
var2
= 3+4j
var1
= 90j
var2
= 90j
print(id(var1
),id(var2
))
(5) --> 容器类型部分
var1
= "你"
var2
= "你"
var1
= ()
var2
= ()
print(id(var1
),id(var2
))
var1
= (1,2,3)
var2
= (1,2,3)
print(id(var1
),id(var2
))
哈希算法
'''
定义:
把不可变的任意长度值计算出固定长度的唯一值,这个值可正可负,可大可小,但长度固定
该算法叫哈希算法(散列算法),这个固定长度值叫哈希值(散列值)
特点:
1.计算出来的值长度固定且该值唯一
2.该字符串是密文,且加密过程不可逆
用哈希算法计算得到一个字符串的用意:
例如: 比对两个文件的内容给是否一致
例如:比对输入的密码和数据库存储的密码是否一致
字典的键和集合中的值都是唯一值,不可重复:
为了保证数据的唯一性,用哈希算法加密字典的键得到一个字符串。用哈希算法加密集合的值得到一个字符串。如果重复,他们都是后面的替换前面的。自动去重
版本:
3.6版本之前都是 字典和集合都是无序的
3.6版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候,
根据字面顺序重新排序,所以看起来像有序,但本质上无序
'''