在Python中,数据类型转换是一项非常常见的操作,它允许我们将一种类型的数据转换为另一种类型。这种转换在处理来自不同源的数据时尤其有用,例如用户输入、文件读取或网络数据等。下面,我将通过代码示例来展示如何将其他数据类型转换为int、float、bool、string(字符串)、List(列表)、字典(dict)、集合(set)和元组(tuple)。
1、转换为int
# 从字符串转换
s = "123"
i = int(s,10)##后面10代表10进制,但是也可以不写
print(i, type(i)) # 输出: 123 <class 'int'> # 从浮点数转换(注意:这可能会丢失小数部分)
f = 123.456
i = int(f)
print(i, type(i)) # 输出: 123 <class 'int'>
2、转换为float
# 从字符串转换
s = "123.456"
f = float(s)
print(f, type(f)) # 输出: 123.456 <class 'float'> # 从整数转换
i = 123
f = float(i)
print(f, type(f)) # 输出: 123.0 <class 'float'>
3、转换为bool
# bool(): 将其他数据类型转换为布尔类型
print(bool(100)) # True
print(bool(3.12)) # True
print(bool("hello")) # True
print(bool([12,34,7])) # True
print(bool((32,45,67))) # True
print(bool({"name":"三哥","age":18})) # True
print(bool(0)) # False
print(bool('')) # False
print(bool("")) # False
print(bool(' ')) # True
print(bool([])) # False
print(bool(())) #False
print(bool({})) # False
print(bool(None)) # False
# 数字0,空字符串""或者'',空列表[],空元组(),空字典{},空集合set(),None这些数据转换为bool类型 时是False.
总结一下上面的例子可以发现 (这个比较重要,后续开发中if判断用这个特点很好用)
-
数字0,空字符串""或者'',空列表[],空元组(),空字典{},空集合set(),None这些数据转换为bool类型 时是False
-
但是这里有个地方特别提醒一下,
print(bool(' ')) # True
这个中间实际是有字符(空格字符,这个判断返回True)
4、 转换为string
# 几乎所有类型都可以转换为字符串
i = 123
f = 123.456
b = True
l = [1, 2, 3]
d = {'a': 1}
s = str(i)
sf = str(f)
sb = str(b)
sl = str(l)
sd = str(d) print(s, sf, sb, sl, sd)
# 输出: 123 123.456 True [1, 2, 3] {'a': 1}
5、转换为元组
在Python中,几乎所有数据类型都可以间接地转换成元组(tuple),但直接转换通常意味着将集合、列表、字典、字符串或其他可迭代对象转换为元组。这是因为元组是一个不可变的序列类型,它可以包含多种数据类型(包括其他元组)的元素。以下是一些可以直接或间接转换为元组的数据类型:
5.1列表(List)转元组
列表是最常见的可以转换为元组的数据结构。使用tuple()函数可以很容易地将列表转换为元组。
my_set = {1, 2, 3}
my_tuple = tuple(my_set)
print(my_tuple) # 输出可能是 (1, 2, 3) 或 (3, 1, 2),因为集合是无序的
5.2集合(Set)转元组
集合是一个无序的、不包含重复元素的集合。虽然集合不是通过索引来访问的,但你可以使用tuple()函数将其转换为元组。
my_set = {1, 2, 3}
my_tuple = tuple(my_set)
print(my_tuple) # 输出可能是 (1, 2, 3) 或 (3, 1, 2),因为集合是无序的
5.3字典(Dict)转元组
字典不能直接转换为元组,因为它包含键值对。但是,你可以通过一些方法间接地将字典的内容转换为元组。例如,将字典的项(items())转换为元组的列表,或者将键(keys())和值(values())分别转换为元组。
my_dict = {'a': 1, 'b': 2}
# 将项转换为元组的列表
items_tuple_list = tuple(my_dict.items())
print(items_tuple_list) # 输出可能是 (('a', 1), ('b', 2)),顺序可能不同 # 分别将键和值转换为元组
keys_tuple = tuple(my_dict.keys())
values_tuple = tuple(my_dict.values())
print(keys_tuple) # 输出可能是 ('a', 'b')
print(values_tuple) # 输出可能是 (1, 2)
5.4字符串(String)转元组
my_str = "hello"
my_tuple = tuple(my_str)
print(my_tuple) # 输出: ('h', 'e', 'l', 'l', 'o')
5.5其他可迭代对象转元组
my_range = range(5)
my_tuple = tuple(my_range)
print(my_tuple) # 输出: (0, 1, 2, 3, 4)
5.6单个值转元组
my_value = 1
my_single_element_tuple = (my_value,) # 注意逗号
print(my_single_element_tuple) # 输出: (1,)
6、转换为List
# 字符串转换为列表(按字符分割)
s = "hello"
l = list(s)
print(l, type(l)) # 输出: ['h', 'e', 'l', 'l', 'o'] <class 'list'>
# 元组转换为列表
t = (1, 2, 3)
l = list(t)
print(l, type(l)) # 输出: [1, 2, 3] <class 'list'>
注意:其他好多数据类型也可以转换成List,具体可以参考元组,可以转成元组的数据基本也可以转成List
7、字典(dict)
# 从元组列表转换(注意:需要是(key, value)对的列表)
t_list = [('a', 1), ('b', 2)]
d = dict(t_list)
print(d, type(d)) # 输出: {'a': 1, 'b': 2} <class 'dict'> # 从JSON字符串转换(需要import json)
import json
json_str = '{"a": 1, "b": 2}'
d = json.loads(json_str)
print(d, type(d)) # 输出: {'a': 1, 'b': 2} <class 'dict'>
8、转换为集合
# 从列表转换
l = [1, 2, 2, 3]
s = set(l)
print(s, type(s)) # 输出: {1, 2, 3} <class 'set'>