003.Python数据类型转换
一 自动类型转换
(针对于Number类型) bool float int complex
当Number不同的数据类型进行运算的时候,默认向更高精度转化
精度从低到高顺序:bool -> int -> float ->complex
True 默认转化是1
False 默认转化是0
- # (1) bool + int
- res = True + 89
- print(res)
- # (2) bool + float
- res = True + 55.78
- print(res)
- # (3) bool + complex
- res = False + 2-4j
- print(res)
- # (4) int + float
- res = 31 + 4.1
- print(res)
- # (5) int + complex
- res = 17 + 4-7j
- print(res)
- # (6) float + complex
- res = 8.12 + 3+5j
- print(res)
[root@node10 python]# python3 test.py
- 90
- 56.78
- (2-4j)
- 35.1
- (21-7j)
- (11.12+5j)
二 强制类型转换
Number => (int float bool complex)
2.1 把数据强制转换成整型 int
(整型 浮点型 布尔类型 纯数字字符串)
- var1 = 13
- var2 = 99.99
- var3 = True
- var3_1 = False
- var4 = 4+1j
- var5 = "123321"
- var6 = "你好123"
- res = int(var2)
- # True 强转整型是1 False 强转整型是0
- res = int(var3)
print(res,type(res))- res = int(var3_1)
- print(res)
- res = int(var5)
- print(res,type(res))
[root@node10 python]# python3 test.py
- 1 <class 'int'>
- 0
- 123321 <class 'int'>
字符型字符串不能转化
- var1 = 13
- var2 = 99.99
- var3 = True
- var3_1 = False
- var4 = 4+1j
- var5 = "123321"
- var6 = "你好123"
- res = int(var6)
- print(res,type(res))
[root@node10 python]# python3 test.py
- Traceback (most recent call last):
- File "test.py", line 9, in <module>
- res = int(var6)
- ValueError: invalid literal for int() with base 10: '你好123'
2.2 float (整型 浮点型 布尔类型 纯数字字符串)
- var1 = 13
- var2 = 99.99
- var3 = True
- var3_1 = False
- var4 = 4+1j
- var5 = "123321"
- var6 = "你好123"
- res = float(var1)
- print(res)
- res = float(var3) # 加上.0 成为小数
- print(res)
- res = float(var3_1) # 0.0
- print(res)
- res = float(var5) #123321.0
- print(res)
[root@node10 python]# python3 test.py
- 13.0
- 1.0
- 0.0
- 123321.0
[root@node10 python]# python3 test.py
- var1 = 13
- var2 = 99.99
- var3 = True
- var3_1 = False
- var4 = 4+1j
- var5 = "123321"
- var6 = "你好123"
- res = float(var4) #can't convert complex to float
- print(res)
[root@node10 python]# python3 test.py
- Traceback (most recent call last):
- File "test.py", line 9, in <module>
- res = float(var4) #can't convert complex to float
- TypeError: can't convert complex to float
complex (整型 浮点型 布尔类型 纯数字字符串 复数)
- var1 = 13
- var2 = 99.99
- var3 = True
- var3_1 = False
- var4 = 4+1j
- var5 = "123321"
- var6 = "你好123"
- res = complex(var1) # 13 + 0j
- print(res)
- res = complex(var2) #(99.99+0j)
- print(res)
- res = complex(var3) #(1+0j)
- print(res)
- res = complex(var3_1) #0j
- print(res)
- res = complex(var5) #(123321+0j)
- print(res)
[root@node10 python]# python3 test.py
- (13+0j)
- (99.99+0j)
- (1+0j)
- 0j
- (123321+0j)
2.3 bool类型
( 容器类型数据 / Number类型数据 都可以,要么True要么False)
布尔类型为假的十种情况: 0,0.0,False,0j,"",[],(),set(),{},None None 是系统的一个关键字 表示空的,什么也没有,一般做初始值
- var1 = 13
- var2 = 99.99
- var3 = True
- var3_1 = False
- var4 = 4+1j
- var5 = "123321"
- var6 = "你好123"
- res = bool(var6)
- print(res,type(res))
- res = bool(var4)
- print(res,type(res))
- res = bool([1,2,3])
- print("<!!!>")
- print(res)
- res = None
- print(res,type(res))
[root@node10 python]# python3 test.py
- True <class 'bool'>
- True <class 'bool'>
- <!!!>
- True
- None <class 'NoneType'>
三 容器类型数据的强制类型转换
(str list tuple set dict)
3.1 str 强转成字符串类型
( 容器类型数据 / Number类型数据 都可以 )
字符串强转规律: 就是单纯的在原数据的两侧加上引号
- var1 = "快乐每一天"
- var2 = [1,2,3]
- var3 = (4,5,6)
- var4 = {"美丽","店铺名个人"}
- var5 = {"a":1,"b":2,"c":3}
- var6 = 123
- res = str(var2)
- print(repr(res),type(res))
- res = str(var3)
- print(repr(res),type(res))
- res = str(var5)
- print(repr(res),type(res))
- res = str(var6)
- # print(res,type(res))
- # repr 以字符串形式原型化输出数据 (想看到引号用repr转化)
- print(repr(res),type(res))
[root@node10 python]# python3 test.py
- '[1, 2, 3]' <class 'str'>
- '(4, 5, 6)' <class 'str'>
- "{'a': 1, 'b': 2, 'c': 3}" <class 'str'>
- '123' <class 'str'>
3.2 list 列表
list 列表强转规律:
如果是字符串:把字符串中的每一个字符当成新的元素放到列表中,如果是其他数据:就是单纯的把原标识符换成[]
- var1 = "快乐每一天"
- var2 = [1,2,3]
- var3 = (4,5,6)
- var4 = {"美丽","店铺名个人"}
- var5 = {"a":1,"b":2,"c":3}
- var6 = 123
- res = list(var1) #['快', '乐', '每', '一', '天']
- print(res)
- res = list(var3)
- print(res)
- res = list(var4)
- print(res)
- res = list(var5) #['a', 'b', 'c'] 强转字典时,保留键,舍去值
- # res = list(var6) # error
- print(res)
[root@node10 python]# python3 test.py
- ['快', '乐', '每', '一', '天']
- [4, 5, 6]
- ['店铺名个人', '美丽']
- ['a', 'b', 'c']
3.3 tuple 元组
tuple 元组强转规律
如果是字符串:把字符串中的每一个字符当成新的元素放到元组中
如果是其他数据:就是单纯的把原标识符换成() 变成元组即可
- var1 = "快乐每一天"
- var2 = [1,2,3]
- var3 = (4,5,6)
- var4 = {"美丽","店铺名个人"}
- var5 = {"a":1,"b":2,"c":3}
- var6 = 123
- res = tuple(var1) #('快', '乐', '每', '一', '天')
- print(res)
- res = tuple(var2)
- print(res)
- res = tuple(var5) #('a', 'b', 'c') #强转字典时,保留键,舍去值
- print(res)
[root@node10 python]# python3 test.py
- ('快', '乐', '每', '一', '天')
- (1, 2, 3)
- ('a', 'b', 'c')
3.4 set 集合
set 集合强转规律
- 如果是字符串:把字符串中的每一个字符当成新的元素放到集合中
- 如果是其他数据:就是单纯的把原标识符换成{} 变成集合即可
- var1 = "快乐每一天"
- var2 = [1,2,3]
- var3 = (4,5,6)
- var4 = {"美丽","店铺名个人"}
- var5 = {"a":1,"b":2,"c":3}
- var6 = 123
- res = set(var1) #因为无序,字符串被打散
- print(res)
- res = set(var2) # {1,2,3}
- print(res)
- res = set(var5) #强转字典时,保留键,舍去值,键值顺序被打乱
- print(res)
[root@node10 python]# python3 test.py
- {'快', '每', '一', '乐', '天'}
- {1, 2, 3}
- {'c', 'a', 'b'}
过滤列表重复数据
- listvar = [1,2,3,4,5,5,6,7,6]
- container = set(listvar)
- print(container)
- container = list(container)
- print(container,type(container))
[root@node10 python]# python3 test.py
- {1, 2, 3, 4, 5, 6, 7}
- [1, 2, 3, 4, 5, 6, 7] <class 'list'>
3.5 二级容器
外面是一个容器类型的数据,里面的元素还是一个容器类型数据
- listvar = [1,2,3,(4,5,6)] # 二级容器
- print(listvar)
[root@node10 python]# python3 test.py
- [1, 2, 3, (4, 5, 6)]
二级元祖
- tup = (3,5,(7,8,9))
- print(tup)
[root@node10 python]# python3 test.py
- (3, 5, (7, 8, 9))
二级集合 (只能存放元组)
- setvar = {1,2,3,(11,22,33)}
- print(setvar)
[root@node10 python]# python3 test.py
- {1, 2, 3, (11, 22, 33)}
二级字典
- dictvar = {'a':{'c':333},'b':2}
- # 取出333
- print(dictvar['a']['c'])
[root@node10 python]# python3 test.py
- 333
# 四级容器
- container = [1,2,3,(4,5,6,{"a":1,"b":[7,8,9]}),90]
- # 取出9
- res = container[-2][-1]["b"][-1]
- print(res)
[root@node10 python]# python3 test.py
- 9
等长的二级容器
(1) 里面每个元素都是容器类型数据
(2) 每个容器类型数据的元素个数都相同
- container = [(1,2,3),[4,5,6]]
3.6 字典的强制类型转换
外面是列表,里面是列表或元组或字符串
- listvar = [["a",1],("b",2),"c123"] # 字符串慎用 如果值是多个,有局限性
- listvar = [["a",1],("b",2)] # 推荐 ***
- res = dict(listvar)
- print(res)
[root@node10 python]# python3 test.py
- {'a': 1, 'b': 2}
外面是元组,里面是列表元组或字符串
- tuplevar = (["c",11],("d",23)) # 推荐 ***
- res = dict(tuplevar)
- print(res)
[root@node10 python]# python3 test.py
- {'c': 11, 'd': 23}
例外:如果往列表或者元组容器放集合,语法上不报错,但情况出乎意料,达不到想要效果
- container = dict([{"a",1},{"b",2}]) # 不推荐使用
- print(container)
[root@node10 python]# python3 test.py
- {'a': 1, 'b': 2}
外面是集合,里面是元组或字符串
- setvar = {('a',1),('b',2),"c3"} # 必须放入不可变数据,即可哈希
- res = dict(setvar)
- print(res)
[root@node10 python]# python3 test.py
- {'b': 2, 'a': 1, 'c': '3'}
int() float() bool() complex()
str() list() tuple() set() dict()
这些函数在进行强转时,都默认转化成当前的数据类型
用这样的方式也可以初始化一个变量
- res = int()
- res = list()
- print(res)
[root@node10 python]# python3 test.py
- []
003.Python数据类型转换的更多相关文章
- Python数据类型转换函数
数据类型转换函数 函 数 作 用 int(x) 将 x 转换成整数类型 float(x) 将 x 转换成浮点数类型 complex(real[,imag]) 创建一个复数 str(x) 将 x 转换为 ...
- 20.Python类型转换,Python数据类型转换函数大全
虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换. 比如说,我们想通过使用 print() 函数输出信 ...
- day3 python数据类型转换及变量的缓存机制
类型转换 1,强制类型转换 1.1 number的转换(int,float,bool,complex) num1 = 10 num2 = 10.6 num3 = True num4 = 3 + 4j ...
- python数据类型转换&&格式化输出
①python的数据类型包含:数字.字符串.列表.元组.字典.集合这六种基本数据类型.不同数据类型的数据可以进行类型的转换. 使用input让用户输入的数据默认为字符串类型: name = input ...
- Python 数据类型转换
Python提供的基本数据类型主要有:布尔类型.整型.浮点型.字符串.列表.元组.集合.字典.日期等等 函数 描述 type(x) x的数据类型 ...
- Python数据类型转换
Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 compl ...
- Python基础 — 数据类型转换
Python 数据类型转换 有时候,我们需要对数据内置的内心进行转换,数据类型的转换,你只需要将数据类型作为函数名即可. 以下几个内置的函数可以执行数据类型之间的转换,这些函数返回一个新的对象,表示转 ...
- 第三十五节,json数据类型转换字符串模块
在使用json模块时需要先 import json 引入模块 json.dumps()模块函数 功能:将Python数据类型转换成字符串[有参] 使用方法:json.dumps(要转换的数据类型变量) ...
- Python基础学习笔记(九)常用数据类型转换函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...
随机推荐
- 8. vue给标签动态绑定title
在利用vue开发时,如果标签宽度比较小,我们需要利用overflow:hidden;text-overflow:ellipsis;white-space: nowrap;对其进行隐藏,但隐藏后如何读其 ...
- SpringBoot中的自动代码生成 - 基于Mybatis-Plus
作者:汤圆 个人博客:javalover.cc 前言 大家好啊,我是汤圆,今天给大家带来的是<SpringBoot中的自动代码生成 - 基于Mybatis-Plus>,希望对大家有帮助,谢 ...
- Where is the Marble UVA - 10474
Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on th ...
- Ionic5整合极光推送JPush ( 简单 )
项目初始化 1. 安装项目依赖: # 安装cordova插件 ionic cordova plugin add jpush-phonegap-plugin --variable APP_KEY=&qu ...
- Java基础(面试复习整理)
基础知识和语法 Java语言初识 计算机语言发展 机器语言.汇编.C.C++.Java Java的诞生与发展 1995 JavaSE JavaME Android JavaEE 2006(大数据) H ...
- ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息
ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息是需要客户授权,下面讲解详细步骤: 第一步:客户点击登录页,自动跳转到微信服务器端获取code 第二步:用第一步获取的code去获取客户的ac ...
- 11- client测试
client是客户端,软件分为客户端与服务端,客户端就是我们使用的软件,比如浏览器,QQ,抖音等.服务端就是客户端使用操作,服务端给你响应的请求.
- 让vim显示空格,tab字符,及vim多行注释
1.显示 TAB 键 文件中有 TAB 键的时候,你是看不见的.要把它显示出来: :set list 现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字符在哪里 ...
- 4.PHP正则表达式与数组
PHP正则表达式相关 行定位符 开头 ^tm 结尾 tm$ 不限制 tm 单词定界符 \btm\b 单词tm,如果想取反的话就是大写的 \Btm\B 或的关系,[Tt][Mm] 可以表达 tm T ...
- office 2007
Microsoft office2007免费版几乎包括了Word2007.Excel2007.PowerPoint.Outlook.Publisher.OneNote.Groove.Access.In ...