『无为则无心』Python基础 — 11、Python中的数据类型转换
目录
1、为什么要进行数据类型转换
使用Python处理数据时,不可避免的要使用数据类型之间的转换。如int
、float
、string
之间的转换。
例如:
问:通过
input()
函数接收用户输入的数据都是字符串类型,如果用户输入1,想得到整型该如何操作?答:转换数据类型即可,即将字符串类型转换成整型。
2、数据类型转换本质
- 所谓的类型转换,将一个类型的对象转换为其他对象。
- 类型转换不是改变对象本身的数据类型,而是根据当前对象的值创建一个新对象,因为
int
、float
、string
变量的数据类型是不会改变的,需要把这个新创建的数据对象,赋值给当前对象的引用变量,那么变量的数据类型才会发生改变。
3、数据类型转换用到的函数
下面是我们常用到的一个数据类型转换函数的列表。
函数 | 说明 |
---|---|
int(x [,base]) (常用) |
将x转换为一个整数 |
float(x) (常用) |
将x转换为一个浮点数 |
complex(real [,imag]) |
创建一个复数,real 为实部,imag 为虚部 |
str(x) (常用) |
将对象x 转换为字符串 |
repr(x) |
将对象x 转换为表达式字符串 |
eval(str) (常用) |
用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) (常用) |
将序列 s 转换为一个元组 |
list(s) (常用) |
将序列 s 转换为一个列表 |
chr(x) |
将一个整数转换为一个Unicode 字符 |
ord(x) |
将一个字符转换为它的ASCII 整数值 |
hex(x) |
将一个整数转换为一个十六进制字符串 |
oct(x) |
将一个整数转换为一个八进制字符串 |
bin(x) |
将一个整数转换为一个二进制字符串 |
我们下面对标识有常用的方法进行说明,其他的函数,我们用到的话自己按照文档练习一下就可以会用。
4、常用数据类型转换的函数
(1)int()
函数
int()
函数可以用来将其他的对象数据类型转换为整型。
示例:
# 1、布尔值转换为整型:True -> 1 False -> 0
a = True
"""
调用int()来将a转换为整型。
int()函数不会对原来的变量a产生影响,
int()函数是将对象转换为指定的数据类型,并将其作为返回值返回。
如果希望修改原来的变量,则需要对变量进行重新赋值
这里很重要,一定要理解。
"""
# 调用int()来将a转换为整型。
int(a)
# int()函数不会对原来的变量a产生影响,打印结果可以看出。
print(type(a)) # <class 'bool'>
# 如果希望修改原来的变量,则需要对变量进行重新赋值
a = int(a)
print(type(a)) # <class 'int'>
# 2、浮点数:直接取整,省略小数点后的内容。
i = 123.456
# 变量没有重新赋值,原变量数据没有任何改变
int(i)
print(i) # 123.456
print(type(i)) # <class 'float'>
# 变量重新赋值后,数值和类型都发生了改变。
i = int(i)
print(i) # 123
print(type(i)) # <class 'int'>
"""
# 3、字符串:合法的整数字符串,直接转换为对应的数字
如果不是一个合法的整数字符串,则报错:
ValueError: invalid literal for int() with base 10: '数值'。
对于其他不可转换为整型的对象,直接抛出异常 TypeError。
(如果出现TypeError的报错,说明类型转换异常了,换句话说就是该类型不能这么转换)
"""
# 合法的整数字符串
i = "123456"
i = int(i)
print(i) # 123456
print(type(i)) # <class 'int'>
# 合法的整数字符串
j = "123.456"
j = int(j)
print(j)
print(type(j))
# 在第二行,数据类型转换的时候就会报错
# ValueError: invalid literal for int() with base 10: '123.456'
# 对于其他不可转换为整型的对象,直接抛出异常 ValueError。
# 如:None
k = None
k = int(k)
# 报出异常:TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
(2)float()
函数
float()
函数可以用来将其他的对象数据类型转换为小数。
示例:
"""
float()函数和int()函数的用法基本一致,不同的是它会将对象转换为浮点数。
1、布尔值:True -> 1.0 False -> 0.0。
2、整型:整数后边直接加上.0,如:15.0。
3、字符串:合法的数字(整数,小数)字符串,直接转换为对应的数字。
4、对于其他不可转换为整型的对象,直接抛出异常 TypeError
(如果出现TypeError的报错,说明类型转换异常了,换句话说就是该类型不能这么转换))
"""
# 简单练习,整型
i = 15
i = float(i)
print(i) # 15.0
print(type(i)) # <class 'float'>
# 简单练习,字符串
i = "15"
i = float(i)
print(i) # 15.0
print(type(i)) # <class 'float'>
j = "15.12312"
j = float(j)
print(j) # 15.12312
print(type(j)) # <class 'float'>
# 简单练习,None
# 同int()函数
(3)str()
函数
str()
函数可以用来将其他的对象数据类型转换为字符串。
示例:
"""
1、布尔值:True -> 'True' False -> 'False'
2、数值型直接原样转换成字符串
3、对于None类型,转换成字符串时,并没有报错。
(可能没学到的类型数据也不会报错)
"""
# 简单练习,float
i = 15.1231
i = str(i)
print(i) # 15.1231
print(type(i)) # <class 'str'>
# 对于None类型,转换成字符串时,并没有报错。
k = None
k = str(k)
print(k) # None
print(type(k)) # <class 'str'>
(4)bool()
函数
bool()
函数可以将对象转换为布尔值,任何对象都可以转换为布尔值。
示例:
"""
规则:
对于所有表示空性的对象都会转换为False,其余的转换为True
哪些表示的空性:0 、 None 、 ''(空串) 。其他的可变对象学后再说。
"""
# 简单练习,非空性
i = 15.1231
i = bool(i)
print(i) # True
print(type(i)) # <class 'bool'>
# 简单练习,非空性
j = "python"
j = bool(j)
print(j) # True
print(type(j)) # <class 'bool'>
# 简单练习,非空性
k = None
k = bool(k)
print(k) # False
print(type(k)) # <class 'bool'>
(5)eval()
函数
eval()
函数是Python中的一个内置函数。- 一般我们会这样描述
evel()
函数,把字符串里边的数据转换成他原本的类型。 eval()
函数用法也是非常的灵活,我们主要说明通过eval()
函数把字符串转换成其他对象数据类型。
示例:
str1 = 'True'
str2 = '1'
str3 = '1.1'
str4 = '(1000, 2000, 3000)'
str5 = '[1000, 2000, 3000]'
print(type(eval(str1))) # <class 'bool'>
print(type(eval(str2))) # <class 'int'>
print(type(eval(str3))) # <class 'float'>
print(type(eval(str4))) # <class 'tuple'>
print(type(eval(str5))) # <class 'list'>
提示:Pyhton中数据类型转换的函数有很多,以后可以慢慢积累不同函数的使用方法。