Python 数据类型转换
目录
整数(int)与浮点数(float)之间的转换
(1)int():将浮点数或字符串转换为整数
(2)float():将整数或字符串转换为浮点数
字符串(str)与其他类型的转换
(1)str():将其他类型转换为字符串
(2)字符串转其他类型
列表(list)、元组(tuple)和集合(set)之间的转换
(1)list():将其他类型转换为列表
(2)tuple():将其他类型转换为元组
(3)set():将其他类型转换为集合
字典(dict)的转换
(1)从其他类型创建字典
(2)字典转其他类型
特殊类型转换
(1)布尔类型(bool)
(2)复杂类型转换
整数(int
)与浮点数(float
)之间的转换
(1)int()
:将浮点数或字符串转换为整数
浮点数转整数:会丢弃小数部分,只保留整数部分。
num = 3.14
int_num = int(num) # 结果为 3
字符串转整数:字符串必须表示一个有效的整数。
str_num = "123"
int_num = int(str_num) # 结果为 123
注意:如果字符串不是有效的整数格式,会抛出 ValueError
。
invalid_str = "123.45"
int_num = int(invalid_str) # 抛出 ValueError
(2)float()
:将整数或字符串转换为浮点数
整数转浮点数:
num = 10
float_num = float(num) # 结果为 10.0
字符串转浮点数:字符串必须表示一个有效的浮点数。
str_num = "3.14"
float_num = float(str_num) # 结果为 3.14
注意:如果字符串不是有效的浮点数格式,会抛出 ValueError
。
invalid_str = "abc"
float_num = float(invalid_str) # 抛出 ValueError
字符串(str
)与其他类型的转换
(1)str()
:将其他类型转换为字符串
整数或浮点数转字符串:
num = 10
str_num = str(num) # 结果为 "10"
float_num = 3.14
str_float = str(float_num) # 结果为 "3.14"
列表、元组、字典等转字符串:
my_list = [1, 2, 3]
str_list = str(my_list) # 结果为 "[1, 2, 3]"
(2)字符串转其他类型
字符串转整数或浮点数已在前面提到。
字符串转列表或元组:
使用 list()
或 tuple()
函数,会将字符串的每个字符作为独立元素。
s = "hello"
list_s = list(s) # 结果为 ['h', 'e', 'l', 'l', 'o']
tuple_s = tuple(s) # 结果为 ('h', 'e', 'l', 'l', 'o')
列表(list
)、元组(tuple
)和集合(set
)之间的转换
(1)list()
:将其他类型转换为列表
元组转列表:
my_tuple = (1, 2, 3)
my_list = list(my_tuple) # 结果为 [1, 2, 3]
集合转列表:
my_set = {1, 2, 3}
my_list = list(my_set) # 结果为 [1, 2, 3],顺序可能不同
(2)tuple()
:将其他类型转换为元组
列表转元组:
my_list = [1, 2, 3]
my_tuple = tuple(my_list) # 结果为 (1, 2, 3)
集合转元组:
my_set = {1, 2, 3}
my_tuple = tuple(my_set) # 结果为 (1, 2, 3),顺序可能不同
(3)set()
:将其他类型转换为集合
列表或元组转集合:会自动去重。
my_list = [1, 2, 2, 3]
my_set = set(my_list) # 结果为 {1, 2, 3}
字典(dict
)的转换
(1)从其他类型创建字典
从键值对列表创建字典:
pairs = [("name", "Kimi"), ("age", 25)]
my_dict = dict(pairs) # 结果为 {"name": "Kimi", "age": 25}
从两个列表创建字典:
keys = ["name", "age"]
values = ["Kimi", 25]
my_dict = dict(zip(keys, values)) # 结果为 {"name": "Kimi", "age": 25}
(2)字典转其他类型
字典的键或值可以分别提取为列表:
my_dict = {"name": "Kimi", "age": 25}
keys = list(my_dict.keys()) # 结果为 ["name", "age"]
values = list(my_dict.values()) # 结果为 ["Kimi", 25]
特殊类型转换
(1)布尔类型(bool
)
将其他类型转换为布尔值:
非零数字、非空字符串、非空列表等为 True
。
零、空字符串、空列表等为 False
。
print(bool(0)) # False
print(bool(10)) # True
print(bool("")) # False
print(bool("hello")) # True
print(bool([])) # False
print(bool([1, 2, 3])) # True
(2)复杂类型转换
JSON字符串与字典的转换:
使用 json
模块:
import json
# JSON字符串转字典
json_str = '{"name": "Kimi", "age": 25}'
my_dict = json.loads(json_str) # 结果为 {"name": "Kimi", "age": 25}
# 字典转JSON字符串
my_dict = {"name": "Kimi", "age": 25}
json_str = json.dumps(my_dict) # 结果为 '{"name": "Kimi", "age": 25}'