python 数据类型强制转换的总结


Posted in Python onJanuary 25, 2021

数据类型的强制转换

如果要将一个数据转换成另一个数据类型,只需要将其放入相应类型的函数中去。

Number类型的数据转换

强制转换为int

可以转换的数据类型

  • int 整型
  • float 浮点型
  • bool 布尔型
  • str 字符串(整型)

数据转换

# 整型(整型转换是原封不动的)
print(int(10))

# 浮点型(浮点型转成整型按照退一法)
print(int(10.999))

# 布尔型(布尔型只有两种值,转换成为整型也只有两种,True=1,False=0)
print(int(True))
print(int(False))

# 字符串(字符串只有去掉引号是整型的才能转换)
print(int('-123'))
print(int('123'))

强制转换为float

可以转换的数据类型

  • int 整型
  • float 浮点型
  • bool 布尔型
  • str 字符串(整型、浮点型)

数据转换

# 整型(整型转换是添加一位小数,小数位为0)
print(float(10))

# 浮点型(浮点型转换原封不动)
print(float(10.999))

# 布尔型(布尔型只有两种值,转换成为整型也只有两种,True=1.0,False=0.0)
print(float(True))
print(float(False))

# 字符串(字符串只有去掉引号是整型和浮点型的才能转换)
print(float('-123'))
print(float('1234.134'))

强制转换为bool

可以转换的数据类型
python中所有的数据类型都可以转换成为布尔型,但是结果只有两种,True 和 False

数据转换
在python中,只有十种情况下的数据转换成为bool的值是False,其余皆为True。

# 就是说,python中一切为空的数据都为False

# 1、整型 (0)
print(bool(0))

# 2、浮点型(0.0)
print(bool(0.0))

# 3、布尔型(False)
print(bool(False))

# 4、复数(0j)
print(bool(0j))

# 5、字符串(空字符串)
print(bool(''))

# 6、列表(空列表)
print(bool([]))

# 7、元组(空元组)
print(bool(()))

# 8、集合(空集合)
print(bool(set()))

# 9、字典(空字典)
print(bool({}))

# 10、None(python关键字,表示什么也没有)
print(bool(None))

强制转换为complex

可以转换的数据类型

  • int 整型
  • float 浮点型
  • bool 布尔型
  • complex 复数
  • str 字符串(整型、浮点型、复数)

数据转换

# 整型(整型转换是原数+0j)
print(complex(10))

# 浮点型(浮点型转换是原数+0j)
print(complex(10.999))

# 布尔型(布尔型只有两种值,转换成为整型也只有两种,True=1+0j,False=0j)
print(complex(True))
print(complex(False))

# 复数(复数转换原封不动,0+0j=0j)
print(complex(1234+341j))
print(complex(0+0j))

# 字符串(字符串只有去掉引号是整型、浮点型和复数的才能转换)
print(complex('-123'))
print(complex('1234.134'))
print(complex('1234+0j'))

数字类型的自动转换

不同类型的数字在一起运算时,结果会按照精度从低到高自动的进行转换。当低精度的数与高精度的数进行运算,最后会变为高精度数类型

精度从低到高排序:

bool -----> int -----> float ------> complex

  • bool和除了bool之外的任何数据类型运算结果都不会是bool
  • complex 与任何类型的数据进行运算都会变成complex
# 例如低精度的bool和高精度的int进行运算,其结果会自动的转变成为高精度的int
# bool + int
res = True + 100
print(res, type(res))

# bool + float
res = True + 100.11
print(res, type(res))

# bool + complex
res = True + 0j
print(res, type(res))

# int + float
res = 123 + 100.9
print(res, type(res))

# int + complex
res = 123 + 0j
print(res, type(res))

# float + complex
res = 100.0000 + 0j
print(res, type(res))

container类型的强制转换

容器类型的转换,使用相应容器的函数进行转换。

转换为字符串

支持转换的数据类型
所有的数据类型

# 方法1、直接加引号
print('[1, 2, 3]')

# 方法2、使用str函数
print(str([1, 2, 3]))
# [1, 2, 3]

# 方法3、使用repr函数
print(repr([1, 2, 3]))
# [1, 2, 3]

# repr函数的作用:原型化输出字符串,不转义字符(显示出引号)
lstvar = [1, 2, 3]
res = str(lstvar)
print(repr(res))
# '[1, 2, 3]'

转换为列表

支持转换的数据类型
仅容器

注意要点

如果是字符串,会把每一个字符串单独的作为一个元素放到列表中;
如果是字典,只保留键,形成一套新的列表;
如果是其它的容器,只是单纯的在原有数据的基础上换上[];

# 1、字符串
# 字符串中的每一个字符都视为一个元素
var = 'hello motherland'
print(list(var))
# ['h', 'e', 'l', 'l', 'o', ' ', 'm', 'o', 't', 'h', 'e', 'r', 'l', 'a', 'n', 'd']

# 2、字典
var = {'one': 1, 'two': 2, 'three': 3}
print(list(var))
# ['one', 'two', 'three']

# 3、其它的数据类型
var = (1, 3, 4, 5, 6)
print(list(var))
# [1, 3, 4, 5, 6]

var = {1, 3, 4, 5, 6}
print(list(var))
# [1, 3, 4, 5, 6]

转换为元组

支持转换的数据类型
仅容器

注意要点

如果是字符串,会把每一个字符串单独的作为一个元素放到列表中
如果是字典,只保留键,形成一套新的列表
如果是其它的容器,只是单纯的在原有数据的基础上换上()

和list是一样的

# 1、字符串
# 字符串中的每一个字符都视为一个元素
var = 'hello motherland'
print(tuple(var))
# ('h', 'e', 'l', 'l', 'o', ' ', 'm', 'o', 't', 'h', 'e', 'r', 'l', 'a', 'n', 'd')

# 2、字典
var = {'one': 1, 'two': 2, 'three': 3}
print(tuple(var))
# ('one', 'two', 'three')

# 3、其它的数据类型
var = [1, 3, 4, 5, 6]
print(tuple(var))
# (1, 3, 4, 5, 6)

var = {1, 3, 4, 5, 6}
print(tuple(var))
# (1, 3, 4, 5, 6)

转换为集合

支持的数据类型
仅容器

注意要点

集合的变化和列表、元组都是一样的,只是单纯的在原有数据的基础上换上{};

但是集合是无序的,返回的结果中的元素的顺序是不固定的

# 1、字符串
# 字符串中的每一个字符都视为一个元素
var = 'hello motherland'
print(set(var))
# {'d', 'r', ' ', 'h', 'n', 'e', 't', 'm', 'a', 'o', 'l'}

# 2、字典
var = {'one': 1, 'two': 2, 'three': 3}
print(set(var))
# {'two', 'one', 'three'}

# 3、其它的数据类型
var = ['1', '3', '4', '5', '6']
print(set(var))
# {'5', '4', '6', '1', '3'}

var = ('1', '3', '4', '5', '6')
print(set(var))
# {'5', '4', '6', '1', '3'}

多级容器

  1. 在一个容器当中嵌套一个容器,这个容器就叫做二级容器;在被嵌套的容器当中再嵌套一个容器,最外层的容器就叫做三级容器;以此类推,有四级、五级……
  2. 容器的类型取决于最外层的容器,不同的类型容器可以相互嵌套,但是,集合和字典除外;因为字典的键和集合中的值必须是可哈希的类型,可哈希的数据类型Number、str、tuple;
  3. 多级容器不包括字符串,字符串是特殊的容器,任何字符在字符串中都是字符串的一个单独元素;
# 二级容器
# 比如列表中嵌套一个列表
var = [1, 2, [1, 2, 3]]

# 三级容器
# 比如列表中嵌套一个列表,被嵌套的列表中还有一个元组
var = [1, 2, [3, 4, (5, 6)]]
# ……

# 二级字典
# 字典是用键来存储数据的,所以被嵌套的容器要放在键下
var = {'1': 1, '2': 2, '666': {'3': 3, '4': 4}}

获取多级容器中的值

# 获取被嵌套的容器中的数据要通过下标索引、键一层一层的将数据获取出来


# 练习:获取四级容器当中的值!!!如何获取10
No1_level4_container = [1, 2, 3, 4, (1, 2, 3, 4, {1: 1, 2: 2, "msr": [1, 2, 3, 4, 10]})]

print("---原四级容器")
print(No1_level4_container)

# 在这个多级容器当中,所有的容器都是最后一个,所以利用python特有的逆向下标,来逐一获取出来

# 1、先获取元组。也就是第二级容器
res = No1_level4_container[-1] # 释放一级 也就是通过列表的下标-1来选择出来
print("---释放一级")
print(res)

# 2、在获取字典
res = res[-1]
res1 = No1_level4_container[-1][-1]
print("---剥夺二级")
print(res)
print(res1)

# 3、在获取键值msr对应的值
res = res['msr']
print("---获取msr")
print(res)

# 4、在获取数值10 下标-1或者4
res1 = res[-1]
res2 = res[4]
print('---最终结果')
print(res1, res2)

# 简写
res = No1_level4_container[-1][-1]['msr'][-1]
print('---简写结果')
print(res)

等长的多级容器

  • 外层容器中的元素都是容器
  • 被嵌套容器中的元素个数相同
# 等长的二级容器
var = [(1, 2, 3,), (4, 5, 6,)]

字典的强转

要求
必须是等长的二级容器,且里面的元素个数必须是两个。

容器的转换

# 使用dict函数进行转换
var = [('one', 1), ('two', 2)]
dctvar = dict(var)
print(dctvar)
print(type(dctvar))
# {'one': 1, 'two': 2}
# <class 'dict'>

注意点
推荐使用列表、元组,不推荐使用集合和字符串

# 1、外层是列表或者元组、集合,里面的容器推荐是元组或者列表
var = [(1, 2), [3, 4]]
res = dict(var)
print(res, type(res))

# 2、不推荐使用集合
# 如果里面是集合,语法上虽然允许,但是有局限性。因为集合无序,往往不符合定义的本意,也就是说往往二级容器当中的第一个元素可能不会成为键。
var = [{'1', 2}, {'2', 3}]
res = dict(var)
print(res)

# 3、不推荐使用字符串
# 如果使用字符串,语法上正确,但是也有局限性。因为字符串中的一个字符就视为一个元素,所以字符串的长度不能超过两个字符,不然就不满足强转字典的要求了。
var = [[1, 2], "ab"]
print(dict(var))

var = [[1, 2], "abc"]
print(dict(var)) # error

各数据类型的函数的作用

# 直接使用创建一个同类型的空值,也就是转成布尔都是false
print(int())		# 0
print(float())		# 0.0
print(bool())		# false
print(complex())	# 0j
print(str())		# ''
print(list())		# []
print(tuple())		# ()
print(set())		# set()
print(dict())		# {}

以上就是python 数据类型强制转换的使用总结的详细内容,更多关于python 数据类型强制转换的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python计算圆周长、面积、球体体积并画出圆
Apr 08 Python
python中list循环语句用法实例
Nov 10 Python
Python下Fabric的简单部署方法
Jul 14 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
Python 处理图片像素点的实例
Jan 08 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Django自定义用户登录认证示例代码
Jun 30 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
利用PyTorch实现VGG16教程
Jun 24 Python
如何让python的运行速度得到提升
Jul 08 Python
python 批量压缩图片的脚本
Jun 02 Python
如何用Python徒手写线性回归
Jan 25 #Python
Python try except finally资源回收的实现
Jan 25 #Python
Python中lru_cache的使用和实现详解
Jan 25 #Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 #Python
Ubuntu20下的Django安装的方法步骤
Jan 24 #Python
selenium+超级鹰实现模拟登录12306
Jan 24 #Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 #Python
You might like
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
聊天室php&amp;mysql(五)
2006/10/09 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
Python常见异常分类与处理方法
2017/06/04 Python
python简单实现操作Mysql数据库
2018/01/29 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
用python处理MS Word的实例讲解
2018/05/08 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python变量访问权限控制详解
2019/06/29 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Python版中国省市经纬度
2020/02/11 Python
基于python实现操作git过程代码解析
2020/07/27 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
数据库的约束含义
2012/09/09 面试题
宝宝周岁宴答谢词
2014/01/26 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
学校运动会霸气口号
2014/06/07 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书