如何在 Python 中进行数据类型转换?
一、Python 类型转换的核心方式
Python 提供了内置函数来实现标准类型转换,核心规则是:用目标类型作为函数名,传入要转换的数据即可。
| 转换函数 | 作用 | 示例 | 结果 |
|---|---|---|---|
int() |
转整数 | int("123") |
123 |
float() |
转浮点数 | float(100) |
100.0 |
str() |
转字符串 | str(3.14) |
"3.14" |
bool() |
转布尔值 | bool(0) |
False |
list() |
转列表(有序、可变) | list((1,2,3)) |
[1,2,3] |
tuple() |
转元组(有序、不可变) | tuple([1,2,3]) |
(1,2,3) |
set() |
转集合(无序、去重) | set([1,2,2,3]) |
{1,2,3} |
dict() |
转字典(键值对) | dict([("a",1),("b",2)]) |
{"a":1,"b":2} |
二、常用类型转换场景(附完整代码示例)
1. 数值型之间 / 字符串与数值的转换(最常用)
python
运行
# 1. 字符串转整数/浮点数(计算必备)
num_str = "123"
num_int = int(num_str)
print(num_int + 10) # 输出:133(字符串无法直接运算,转成int才行)
price_str = "99.9"
price_float = float(price_str)
print(price_float * 2) # 输出:199.8
# 2. 浮点数转整数(截断小数部分,不是四舍五入)
print(int(3.99)) # 输出:3
print(int(-2.5)) # 输出:-2
# 3. 整数/浮点数转字符串(拼接文本)
age = 18
print("我的年龄是:" + str(age)) # 输出:我的年龄是:18
# 4. 特殊:布尔值与数值的转换(True=1,False=0)
print(int(True)) # 输出:1
print(float(False))# 输出:0.0
2. 容器类型之间的转换(列表 / 元组 / 集合 / 字典)
python
运行
# 1. 列表 ↔ 元组(有序性保留,可变性切换)
my_list = [1, 2, 3]
my_tuple = tuple(my_list) # 列表转元组(不可修改)
print(my_tuple) # 输出:(1, 2, 3)
my_tuple2 = (4, 5, 6)
my_list2 = list(my_tuple2) # 元组转列表(可修改)
my_list2.append(7)
print(my_list2) # 输出:[4, 5, 6, 7]
# 2. 列表/元组转集合(自动去重)
nums = [1, 2, 2, 3, 3, 3]
unique_nums = set(nums)
print(unique_nums) # 输出:{1, 2, 3}
# 3. 列表转字典(需是嵌套的二元组/列表)
kv_list = [("name", "Tom"), ("age", 20)]
my_dict = dict(kv_list)
print(my_dict) # 输出:{'name': 'Tom', 'age': 20}
# 4. 字典转其他容器(只取键/值)
print(list(my_dict.keys())) # 取键转列表:['name', 'age']
print(tuple(my_dict.values()))# 取值转元组:('Tom', 20)
3. 布尔值转换(判断空 / 非空)
Python 规则:空值 / 0 为 False,非空 / 非 0 为 True
python
运行
# 数值转布尔
print(bool(0)) # 输出:False
print(bool(100)) # 输出:True
print(bool(3.14)) # 输出:True
# 字符串转布尔
print(bool("")) # 空字符串:False
print(bool(" ")) # 空格字符串(非空):True
print(bool("abc")) # 输出:True
# 容器转布尔
print(bool([])) # 空列表:False
print(bool({})) # 空字典:False
print(bool({1})) # 非空集合:True
三、类型转换的注意事项(避坑重点)
-
转换失败会报错:只有符合目标类型格式的数据才能转换,否则抛
ValueErrorpython运行# 错误示例:非数字字符串转整数 # int("abc") # 会报错:ValueError: invalid literal for int() with base 10: 'abc' # 正确做法:先判断或捕获异常 s = "123a" if s.isdigit(): print(int(s)) else: print("不是有效数字") # 输出:不是有效数字 -
集合转换会丢失顺序:集合是无序的,列表转集合后,元素顺序会打乱python运行
order_list = [3, 1, 2] print(set(order_list)) # 输出可能是 {1,2,3}(顺序不固定) -
字典的 key 必须是不可变类型:转字典时,键不能是列表 / 集合等可变类型python运行
# 错误示例: # dict([([1], 2)]) # 报错:unhashable type: 'list' # 正确示例(键用元组): print(dict([((1,), 2)])) # 输出:{(1,): 2}
总结
- Python 类型转换核心是用目标类型作为内置函数(如
int()、list()),传入待转换数据; - 最常用的是字符串↔数值(计算)、列表↔集合(去重)、列表↔元组(可变性切换);
- 转换前要确保数据格式合法,避免
ValueError,同时注意集合无序、字典键不可变等特性。

浙公网安备 33010602011771号