零基础学Python之数据类型间的转换。超详细,你值得拥有。

发布时间:2024年01月23日

前言

之前我们学习了整数、浮点数、复数以及字符串四种数据类型,编写代码时不同的情况下所选用的数据类型也是不同的,那么我们是否可以对已有的数据类型进行选择性的转化呢?这边是今天我们主要探讨的问题。同时我会介绍eval()函数,它与类型间的转换也有着不小的联系,我们赶紧开始吧。

数据类型的转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换。一般情况下我们只需要将数据类型作为函数名即可。Python 数据类型转换可以分为两种:

  • 隐式类型转换——自动完成
  • 显式类型转换——使用类型转换函数转换

隐式类型转换

在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。当我们对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失,这种转换可以在同种数据类型中发生,也可以在不同数据类型中发生。示例如下:
同种数据类型的转换:

int1 =10	#整数类型
int2 =3		#整数类型
c =int1/int2	
print(c,'c的数据类型是:',type(c))	#获取c的数据类型
print(round(c,1))	#保留1位小数

示例中两个整数类型转换为了浮点型,结果如下:

3.3333333333333335 c的数据类型是: <class 'float'>
3.3

不同种数据类型的转换:

num_int =12		#整数类型
num_float =2.13	 #浮点型
new =num_int+num_float	#不同类型相加
print(new,'new的数据类型是',type(new))		#获取新的数据类型
print(round(new,2))		#浮点型保留两位小数

运行结果如下:

14.129999999999999 z的数据类型是 <class 'float'>
14.13

结果可见,整数类型转换为了浮点型,这是因为 Python 会将较小的数据类型转换为较大的数据类型,以避免数据丢失。但并不是所有的数据类型都可以进行隐式转换,例如整型与字符串型之间的转换。Python 为这些类型的情况提供了一种解决方案,称为显式转换。

显示转换

在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str() 等预定义函数来执行显式类型转换。

int():强制转换为整型

将float类型转化为int型只保留整数部分,不遵循四舍五入,转换字符串类型时直接去掉引号,输出内部字符数字。示例如下:

print(int(2.6))# 输出2
print(int(2.4))# 输出2
print(int(-2.4))# 输出-2
print(int(-2.6))# 输出-2
print(int('1234'))

结果如下:

2
2
-2
-2
1234

使用int()函数,我们还可以实现整型与字符型以及字符型与字符型之间的算术运算。示例如下:

print(20+int('10'))
print(int('10') +int('20'))

先将字符型转化为整型后在进行算术运算,结果如下:

30
30

float():强制转换为浮点型

将int类型转换为float类型,只保留一位小数,转换字符串类型时去掉引号,内部字符数字若为整数,则输出时保留一位小数,若字符数字本身含有小数部分,则输出不变。示例如下:

print(float(2))
print(float('3'))
print(float('3.1'))
print(float('3.12'))

结果如下:

2.0
3.0
3.1
3.12

str():强制转换成字符串类型

整型与浮点型等转换为字符串型时输出两边直接加上引号即可。示例如下:

print(str(2))	#输出 '2'
print(str(2.0))		#输出 '2.0'
print(str("helloworld"))	#输出 'helloworld'

其它的类型转换函数

除了这些常见转换函数之外,还有创建复数类型的complex(real,image)函数,将序列s转化为元组的tuple(s)函数,将序列s转换为列表的list(s)函数,将整数转化为字符的chr()函数,讲一个字符转化为其对应整数值的ord()函数,将一个整数转化为一个十六进制的字符串的hex()函数,将一个整数转换为一个八进制字符串的oct()函数,以及将一个整数转换为一个二进制的字符串的bin()函数等等,大家如果有兴趣可以查一查作为了解,我在此便不再过多介绍。

数据类型间的“高低”区分

我们常用"较高数据类型"和"较低数据类型"是在隐式类型转换中用于描述数据精度的概念。精度可以理解为数据类型能够表示的信息量或详细程度。在Python中,数据类型的"高"和"低"主要根据它们的精度来判断。
“较高"数据类型指的是能够表示更多信息(或更精确信息)的数据类型,而"较低"的数据类型则表示的信息较少。例如浮点型能表示的信息就比整数类型所表示的信息多。故在上面隐式转换的整形转换为浮点型示例中,整数就会被自动转换为浮点数,以保证信息不丢失。
以此类推可以发现,复数就比浮点数和整数"高”,因为复数可以表示实数和虚数,而浮点数和整数只能表示实数。所以在进行运算时,如果操作数包含复数,那么其他的浮点数或整数就会被转换为复数。
通常情况下,Python的数据类型的"高低"可以按照如下顺序理解:布尔< 整型 < 浮点型< 复数。这个顺序主要根据数据类型可以表示的信息范围和精度来确定的。

不同的数据类型间的转换条件

虽然Python为提供了一些内置的函数来实现不同数据类型之间的转换,如int(), float(), str(), list(), tuple(), set()等等,但并非所有类型的数据都可以被转换成其他任意类型。转换是否可行,主要取决于数据本身是否包含足够的信息来表示目标类型,如果一种类型中所包含的信息在其它类型中无法接受,那又怎么能实现类型间的转换呢。
一个只包含数字字符的字符串如 “123” 可以被转换为一个整数或浮点数,因为这个字符串中包含了足够的信息来表示一个数字。然而对于一个非数字字符例如 “Helloworld”,它就无法被转换为一个整数或浮点数,因为这个字符串并不包含任何可以表示一个数字的信息。
总之,我们要清楚数据类型的转换并非无限制,它取决于原始数据是否能够提供足够的信息来表示目标类型。大家在编程中对信息进行类型转换时一定要记住哦!

结语

今天的内容就这样结束了,如果你有不清楚的地方可以在评论留言或者私信我一起讨论,要是有出错的地方也希望大家能够为我大胆?出。好啦,今天又是元气满满的一天,下次再见啦!!!

文章来源:https://blog.csdn.net/2202_75336900/article/details/135759115
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。