day3 类型转换
2020-07-08 16:50
113 查看
类型转换
- 1.强制类型转换 Number (int float bool complex)
- (1) int 强制转换成整型
- (2) float 强制转换成浮点型
- (3) complex 强制转换成复数
- (4) bool 强制转换成布尔型
- (1) str (都可以转换)
- repr 可以原型化输出字符串,不转义字符(显示出引号)
- (2) list : 强制转换成列表
- (3) tuple : 强制转换成元组
- (4) set : 强制转换成集合
- (5) dict : 强制转换为字典
- 强制转换字典要求
1.强制类型转换 Number (int float bool complex)
var1 = 99 var2 = 98.789 var3 = True var4 = 3-4j var5 = "987" var6 = "abc123"
(1) int 强制转换成整型
res = int(var2) #99 res = int(var3) #1 res = int(var4) #error res = int(var5) #987 res = int(var6) #error
(2) float 强制转换成浮点型
res = int(var1) #99.0 res = int(var2) #98.789 无需转换 res = int(var3) #1.0 res = int(var4) #error res = int(var5) #987.0 res = int(var6) #error
(3) complex 强制转换成复数
res = int(var1) #99 + 0j res = int(var2) #98.789 + 0j res = int(var3) #1 + 0j res = int(var4) #无需转换 res = int(var5) #987 + 0j res = int(var6) #error
(4) bool 强制转换成布尔型
""" bool为假的10种情况 0 0.0 0j False "" [] () set() {} None #None 是系统关键字 用来初始化 """
2.自动类型转换 Number( int float bool complex)
""" 自动类型转换规则:默认由低精度 向 高精度自动转换 bool > int > float > complex """
bool + int
print(False+ 3) # 1 + 3 = 4
bool + float
print(True + 4.15)# 1.0 + 4.15 = 5.15
bool + complex
print(True + 3+4j)# 1 +0j + 3 + 4j = 4+4j
int + float
print(3 + 4.6) # 3.0 + 4.6 =7.6
int + complex
print(10 + 4-3j )# 10 + 0j + 4 - 3j = 14 + 3j
float + complex
print(5.68 + 5-100j) # 5.68+0j + 5 - 100j = 10.68 - 100j
3.容器类型的强制转换(str list tuple set dict)
strvar = '天气,大海,acb' listvar = ["周一","周二","周三"] tuplevar = ("白天","黑夜","傍晚") setvar = {"一月","二月","三月"} dictvar = {"天空":"蓝色","沙漠":"黄色","树林":"绿色"} intvar = 4567
(1) str (都可以转换)
"""强转成字符串 在原有的数据基础上加上引号""" res = str(listvar) print(res , type(res))
repr 可以原型化输出字符串,不转义字符(显示出引号)
print( repr(res) )
(2) list : 强制转换成列表
""" 如果是字符串 把字符串的每个字符单独作为一个新元素放到列表中 如果是字典 只保留健 形成新的列表 如何是其他容器 在原有数据基础上换上[] """ res = list(strvar) res = list(tuplevar) res = list(setvar) res = list(dictvar) print(res, type(res))
(3) tuple : 强制转换成元组
""" 如果是字符串 把字符串每个字符单独作为一个元素 放到新元组中 如果是字典 只保留健 形成新的元素 如果是其他容器 在原有的数据基础上换上() """ res = tuple(var)
(4) set : 强制转换成集合
""" 如果是字符串 把字符串的每个字符单独的当做一个新元素放到集合中 如果是字典 只保留健 形成新的集合 如果是其他容器 在原有的基础上换上{} """ res = tuple(var)
(5) dict : 强制转换为字典
二级容器 (list tuple set dict) # 二级列表 lst = [1,2,[3,4]] # 二级元组 tup = (5,6,7,(8,9)) # 二级集合 setvar = {10,11,(12,13)} # 二级字典 dic ={"a":1,"b":{"c":3,"d":4}} # 获取4这个元素 res = dic["b"] print(res) # {'c': 3, 'd': 4} res2 = res["d"] print(res2) # 简写一步 res = dic["b"]["d"] print(res)
强制转换字典要求
# 等长的二级容器 : 里面的元素都是容器,容器里面的元素个数都相同 lst = [(1,2,3) , [4,5,6]] lst = [(1,2) , [4,5]] # dict 强制转换成字典 """ 强转成字典时 , 必须是等长的二级容器,里面的元素个数是2个 """ # (1) 外层是列表或者元组或者集合,里面的容器是元组或者列表(推荐) lst = [("a",1),["b",2]] tup = (("c",3),["d",4]) setvar = {(1,2),(3,4),("f3",3),("f4",4)} res = dict(lst) # {'a': 1, 'b': 2} res = dict(tup) # {'c': 3, 'd': 4} # (2) 里面是集合的情况,存在局限性(不推荐) lst = [{"a",333},{"zz",5}] # 因为集合无序,不符合定义的本意,不推荐使用 # (3) 里面是字符串的情况,语法上正确,但是有局限性(不推荐) lst = [("a",1),"b2"] # 字符串长度只能2个 # lst = [("a",1),"b23"] error """ 总结: str() list() tuple() dict() set() 默认创建一个该数据类型的值 """
变量的缓存机制 (仅对python3.6版本负责)
"""机制: 只有两个值相同 就只开辟一个空间 ---整型--- # -->Number 部分 : -5 ~ ∞(正无穷) # -->float 部分 : 非负数 # -->bool 部分 : 值一样 # -->complex 部分 : 正虚数 ---容器类型--- # -->str 部分 : 字符串相同 # -->tuple 部分 : tuple=() 空元组 """
相关文章推荐
- Day3、C语言数据类型、变量的输入与输出、进制的转换
- 前端学习记录Day3-Number和BigInt类型、二进制和十进制转换
- 对论坛中有关数据类型转换的整理(ZZ)
- 没有找到接受”类型的左操作数的运算符,或没有可接受的转换
- C#输入输出及类型转换,变量,常量。
- java中数据类型转换
- std::string 与 char 类型的相互转换
- 数据类型转换、密码安全加密MD5方法
- .net4.0切换2.0时,SplitContainer”的对象强制转换为类型
- 在javascript里 string 和 int 类型得相互转换
- 类型System.Double的对象无法转换为类型System.Single
- Java学习之数据类型的转换
- java中字符类型的转换
- String转换成date类型
- Scala 2.10.0 新特性之使用隐式类进行类型隐式转换
- java学习日记——多态中的引用类型转换
- "?:"运算符类型转换问题
- 17.类型转换
- js中的数据类型转换
- JAVA语言规范JAVA SE 8 - 类型转换与上下文