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 02 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
python实现对变位词的判断方法
Apr 05 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
Python 绘制可视化折线图
Jul 22 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
Python创建自己的加密货币的示例
Mar 01 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
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
Javascript this 的一些学习总结
2012/08/31 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
原生js实现弹窗消息动画
2020/11/20 Javascript
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python编写爬虫小程序
2015/05/14 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
Python实现按中文排序的方法示例
2018/04/25 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
Django celery异步任务实现代码示例
2020/11/26 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
美国网上书店:Barnes & Noble
2018/08/15 全球购物
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
2014年新农村建设工作总结
2014/12/01 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
超市员工管理制度
2015/08/06 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL