首页 > 其他分享 >6大数据类型相互转换

6大数据类型相互转换

时间:2024-03-10 10:34:17浏览次数:22  
标签:转换 数据类型 元组 print 类型 相互 type

定义:Python中的不同数据类型是不能进行转换的,所以我们需要数据类型转换,一共分为两种类型转换

  • 自动类型转换
  • 强制类型转换

在Python中:

  • 容器类型数据:字符串,列表,元组,字典,集合
  • 非容器类型数据:数字类型,布尔类型

自动类型转换

定义:当两个不同类型的数据进行转换时,结果会进行计算

a = 10
b = True        # True 代表数字 1
print(a + b)    # 11 重点:精度等级(布尔类型  <  整形)所以最终转换为整形

c = 3.14
print(a + c)    # 13.14 重点:精度等级(整形  <  浮点类型)所以最终转换为浮点类型

精度等级:布尔类型 < 整形 < 浮点类型

强制类型转换

要进行数据类型转换,首先我们需要确定数据类型是什么,使用type()函数

type 检测数据类型
str = "123"
print(type(str))        # <class 'str'> 字符串类型
num = 123
print(type(num))        # <class 'int'> 整形类型
l = [1, 2, 3, 4]
print(type(l))          # <class 'list'> 列表类型
t = (1, 2, 3, 4)
print(type(t))          # <class 'tuple'> 元组类型
s = {1, 2, 3, 4}
print(type(s))          # <class 'set'> 集合类型
d = {"name": "小明"}
print(type(d))          # <class 'dict'> 字典类型
b = True
print(type(b))          # <class 'bool'> 布尔类型
f = 3.1415926
print(type(f))          # <class 'float'> 浮点类型
# type() 函数也可以直接放数值检测
print(type(3.14))       # <class 'float'> 浮点类型

str()强制类型转换

定义:所有数据类型都可以转换为字符串类型

num = 123
resNum = str(num)
print("resNum = {},type(resNum) = {}".format(resNum, type(resNum)))   # resNum = 123,type(resNum) = <class 'str'>
f = 3.1415926
resf = str(f)
print("resf = %s,type(resf) = %s" % (f, type(resf)))    # resf = 3.1415926,type(resf) = <class 'str'>

数字类型强制转换

int和float强制类型转换

定义:

  • int():可以把其他类型数据转换为整形;
  • float():可以把其他类型数据转换为浮点类型;

注意:数字类型之间可以相互转换;只有字符串可以转换为数字类型,并且字符串中的元素必须为纯数字,否则无法转换!

a = 123
ra = float(a)   # int 数据类型强制转换为 float 数据类型
print(ra)       # 123.0

b = 3.1415926
rb = int(b)     # float 数据类型强制转换为 int 数据类型,不遵守四舍五入
print(rb)       # 3

# True 代表 1 False 代表 0
c = True
rc = int(c)     # Bool 数据类型强制转换为 int 数据类型
print(rc)       # 1
fc = float(c)   # Bool 数据类型强制转换为 float 数据类型
print(fc)       # 1.0

d = False
rd = int(d)
print(rd)       # 0
fd = float(d)
print(fd)       # 0.0

e = "345"
re = int(e)     # 字符串纯数字类型转换为 int 整形
print(re)       # 345

# 字符串转为浮点类型
f = "3.1415926"
fe = float(f)
print(fe, type(fe)) # 3.1415926 <class 'float'>

Bool类型强制转换

定义:Bool可以把其他数据类型转换为True或者False

  • 容器类型转布尔类型

容器中为空 ====> False
容器中有元素 ====> True

  • 数字类型转布尔类型

int 类型中 0 为 False,其他值为 True
float 类型中 0.0 为 False,其他值为 True

a = ""      # 空字符串
b = []      # 空列表
c = ()      # 空元组
d = {}      # 空字典
e = set()   # 空集合
print(bool(a), bool(b), bool(c), bool(d), bool(e))  # False False False False False

f1 = 0.0
f2 = 3.14
print(bool(f1), bool(f2))   # False True

g1 = 0
g2 = 1
print(bool(g1), bool(g2))   # False True

list强制数据类型转换

定义:

python的数据类型强制转换:list()
(1)数字类型是非容器类型,不能转换为列表;
(2)字符串转列表时,会把字符串中的每一个字符当作列表的元素;
(3)元组转列表时,会把元组中的每一个元素当作列表的元素;
(4)字典转列表时,只会保留字典中的键值;
(5)集合转列表时,结果是无序的,因为集合本身就是无序的

# a = 123
# ra = list(a)
# print(ra)     # a 是整形数字,转换为列表直接报错

# 字符串转列表时,会把字符串中的每一个字符当作列表的元素;
b = "123abc"
rb = list(b)
print(rb)       # ['1', '2', '3', 'a', 'b', 'c']

# 元组转列表时,会把元组中的每一个元素当作列表的元素;
c = (1, 2, 3, "abc")
rc = list(c)
print(rc)       # [1, 2, 3, 'abc']

# 字典转列表时,只会保留字典中的键值;
d = {
    "username": "帅帅",
    "age": 21,
    "hobby": "打羽毛球"
}
rd = list(d)
print(rd)   # ['username', 'age', 'hobby']

# 集合转列表时,结果是无序的,因为集合本身就是无序的
# 重点:【转换是随机的】
e = {1, 2, 3, "study", "python", "forever"}
re = list(e)
print(re)   # [1, 2, 3, 'study', 'forever', 'python']

Tuple强制类型转换

定义:

python的数据类型强制转换:tuple
其他类型数据类型元组类型与其他类型转元组类型的规则相同
(1)数字类型是非容器类型,不能转换为元组;
(2)字符串转元组时,会把字符串中的每一个字符当作元组的元素;
(3)列表转元组时,会把列表中的每一个元素当作元组的元素;
(4)字典转元组时,只会保留字典中的键值;
(5)集合转元组时,结果是无序的,因为集合本身就是无序的

# a = 123
# ra = tuple(a)
# print(ra)     # a 是整形数字,转换为元祖直接报错

# 字符串转元组时,会把字符串中的每一个字符当作元组的元素;
b = "123abc"
rb = tuple(b)
print(rb)       # ('1', '2', '3', 'a', 'b', 'c')

# 列表转元组时,会把列表中的每一个元素当作元组的元素;
c = [1, 2, 3, "abc"]
rc = tuple(c)
print(rc)       # (1, 2, 3, 'abc')

# 字典转元组时,只会保留字典中的键值;
d = {
    "username": "帅帅",
    "age": 21,
    "hobby": "打羽毛球"
}
rd = tuple(d)
print(rd)   # ('username', 'age', 'hobby')

# 集合转元组时,结果是无序的,因为集合本身就是无序的
# 重点:【转换是随机的】
e = {1, 2, 3, "study", "python", "forever"}
re = tuple(e)
print(re)   # (1, 2, 3, 'python', 'forever', 'study')

Set强制类型转换

定义:

python的数据类型强制转换:set()
其他类型转换为集合类型
(1)数字类型是非容器类型,不能转换为集合类型
(2)字符串类型转集合时,结果是无序的;
(3)列表转集合时,结果是无序的;
(4)元组转集合时,结果是无序的;
(5)字典转集合时,只保留字典中的键值,结果是无序的

# a = 123
# ra = set(a)
# print(ra)     # a 是整形数字,转换为元祖直接报错

# 字符串类型转集合时,结果是无序的;
b = "1233abc"
rb = set(b)
print(rb)       # {'a', '3', 'b', 'c', '1', '2'}

# 列表转集合时,结果是无序的;
c = [1, 2, 3, 2, "abc"]
rc = set(c)
print(rc)       # {1, 2, 3, 'abc'}

# 元组转集合时,结果是无序的;
e = (1, 2, 3, 1, "study", "python", "forever")
re = set(e)
print(re)   # {'forever', 'study', 1, 2, 3, 'python'}

# 字典转集合时,只保留字典中的键值,结果是无序的
d = {
    "username": "帅帅",
    "age": 21,
    "hobby": "打羽毛球",
    "phone": "12809784768"
}
rd = set(d)
print(rd)   # {'hobby', 'phone', 'username', 'age'}

Dict强制类型转换

定义:

python的数据类型强制转换:dict() 其他类型转为字典类型
(1)数字,字符串,集合 不能转换为字典类型
(2)列表类型转字典类型,列表必须为等长二级容器,子容器中的元素个数必须为 2
(3)元组类型转字典类型,元组必须为等长二级容器,子容器中的元素个数必须为 2

# a = 123
# ra = dict(a)    # 转换报错
# print(ra)

# b = "123abc"
# rb = dict(b)    # 转换报错
# print(rb)

# c = {1, 2, 3, "a", "b", "c"}
# rc = dict(c)    # 转换报错
# print(rc)

# 二级容器的长度必须为2,依次作为字典的 key - value 
d = [["name", "红烧牛肉面"], ["price", 2.58], ["stock", 100]]
rd = dict(d)
print(rd)   # {'name': '红烧牛肉面', 'price': 2.58, 'stock': 100}

e = (("length", 1.20), ("width", 1.30), ("height", 1.50))
re = dict(e)
print(re)   # {'length': 1.2, 'width': 1.3, 'height': 1.5}

 

标签:转换,数据类型,元组,print,类型,相互,type
From: https://www.cnblogs.com/michael-study/p/18063797

相关文章

  • 使用 Amazon Bedrock 上的 Claude 3 将架构图转换为 CDK/Terraform 代码
    概述在云原生领域,基础设施即代码(IaC)对于开发人员和DevOps团队来说是一种不可避免的实践。最近,AmazonBedrock上线了Claude3Sonnet模型和这个模型的图像转文本能力。这无疑开启了一个新时代,也就是实现架构图与IaC工具的无缝融合,如亚马逊云科技云开发工具包(CDK)或......
  • vim 编辑python文件 禁止tab转换为空格的设置
    1.修改各种路径下的.vimrc都没用2.一个解决方法:每次用vim打开python文件后,分别运行:setts=4(8):setnoexpandtab:%retab!3.其他:安装python编辑的dictionary补全提示插件:filetypepluginonletg:pydiction_location='~/.vim/tools/pydiction/compl......
  • MYSQL学习笔记2: 数据类型
    数据类型数值类型TINYINTUNSIGNED无符号的tinyintDOUBLE(4,1)整体长度为4,小数位数为1的DOUBLE数据字符串类型CHAR(10)定长字符串,最多存储10个字符,占用10个字符的内存VARCHAR(10)变长字符串,最多存储10个字符,根据实际字符的长度计算内存空间对于CHAR和VARCHA......
  • C++中OpenCV、Armadillo矩阵数据格式的转换方式
      本文介绍在C++语言中,矩阵库Armadillo的mat、vec格式数据与计算机视觉库OpenCV的Mat格式数据相互转换的方法。  在C++语言的矩阵库Armadillo与计算机视觉库OpenCV中,都有矩阵格式的数据类型;而这两个库在运行能力方面各有千秋,因此实际应用过程中,难免会遇到需要将二者的矩阵格......
  • python3代码转换成docker镜像启动
    1.打包成docker镜像来使用切到Tags,搜索3.11选择python:3.11.4-slim-bullseye2.在压测脚本的根目录中,创建Dockerfile文件: FROMpython:3.11.4-slim-bullseyeWORKDIR/opt/appCOPYrequirements.txt./ENVhost=nullENVport=nullENVonlyResetJob=nullRUNpip......
  • 锂电池电源转换利器:PW2053芯片,实现3.7V转3V/2.5V/1.2V低功耗转换
    在现代电子设备领域,高效、稳定的电源管理对于设备的性能和寿命至关重要。特别是在锂电池供电的应用中,选择一款性能卓越的降压调节器显得尤为关键。今天,我们将向您介绍一款备受赞誉的高效同步降压调节器——PW2053。这款调节器凭借其出色的性能和广泛的应用领域,在电源管理领域独领......
  • Java工具 - 坐标系WGS-84,GCJ-02,BD-09之间的相互转换
    importjava.util.ArrayList;importjava.util.List;/***地图坐标转换*/publicclassGpsCoordinateUtils{privatestaticfinaldoublePI=3.1415926535897932384626433832795;//privatestaticfinaldoublePI=3.14159265358979324;privatestaticf......
  • int等强制类型转化,不会永久改变数据类型
    int等强制类型转化,不会永久改变数据类型例题6-11拆分实数的整数与小数部分分数10作者张泳单位浙大城市学院本题要求实现一个拆分实数的整数与小数部分的简单函数。函数接口定义:voidsplitfloat(floatx,intintpart,floatfracpart);其中x是被拆分的实数(0≤x<100......
  • MyBatis Java 和 数据库 数据类型对应表
    类型处理器(typeHandlers)MyBatis在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时,都会用类型处理器将获取到的值以合适的方式转换成Java类型。下表描述了一些默认的类型处理器。提示 从3.4.5开始,MyBatis默认支持JSR-310(日期和时间API)。类型处......
  • 538. 把二叉搜索树转换为累加树c
    右根左遍历就行。/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/voidorder(structTreeNode*root,int*pre){if(!root)return;order(root->right,pr......