python3 数据类型转换

296 阅读3分钟

字符串转换为数字类型

在Python中,将字符串转换为数字类型是一个常见的任务。这可以通过内置函数int()float()实现。这些函数分别将字符串转换为整数和浮点数。


# 字符串转整数
num_str = "123"
num_int = int(num_str)
print(num_int)  # 输出:123

# 字符串转浮点数
num_str = "3.1415"
num_float = float(num_str)
print(num_float)  # 输出:3.1415

需要注意的是,如果字符串无法转换为数字类型,这些函数将会抛出一个ValueError异常。

2. 数字类型转换为字符串

在Python中,将数字类型转换为字符串可以使用str()函数。例如:


# 数字类型转字符串
num_int = 123
num_str = str(num_int)
print(num_str)  # 输出:"123"

num_float = 3.1415
num_str = str(num_float)
print(num_str)  # 输出:"3.1415"

3. 列表、元组和集合类型转换

在Python中,可以通过内置函数list()tuple()set()将列表、元组和集合类型互相转换。


# 列表转元组
lst = [1, 2, 3]
tup = tuple(lst)
print(tup)  # 输出:(1, 2, 3)

# 元组转集合
tup = (1, 2, 3)
st = set(tup)
print(st)  # 输出:{1, 2, 3}

# 集合转列表
st = {1, 2, 3}
lst = list(st)
print(lst)  # 输出:[1, 2, 3]

需要注意的是,集合类型是无序的,因此转换为列表或元组时,可能会导致顺序不同。

4. 字典类型转换

在Python中,可以通过内置函数dict()将其他类型转换为字典类型。但需要满足以下条件:

  • 序列中的元素必须是长度为2的元组,其中第一个元素是键,第二个元素是值。
  • 元素必须是可哈希的,即元素不能是列表或字典等可变对象。

# 序列转字典
seq = [('a', 1), ('b', 2), ('c', 3)]
d = dict(seq)
print(d)  # 输出:{'a': 1, 'b': 2, 'c': 3}

5. 其他类型转换

常见类型转换外,Python还支持其他一些类型转换。这些类型转换主要用于高级编程中,例如将函数、类和模块等对象转换为字符串类型,或者将字符串类型转换为其他对象。

5.1. 将函数转换为字符串

在Python中,可以通过内置函数str()将函数转换为字符串类型。这可以用于调试和日志记录等应用场景。


def add(a, b):
    return a + b

add_str = str(add)
print(add_str)  # 输出:"<function add at 0x7f2391baf0d0>"

需要注意的是,将函数转换为字符串时,只会输出函数的名称和内存地址,并不会输出函数的实际实现。如果需要输出函数的实现,可以使用inspect模块。

5.2. 将类转换为字符串

在Python中,可以通过内置函数str()将类转换为字符串类型。这可以用于调试和日志记录等应用场景。


class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person_str = str(Person)
print(person_str)  # 输出:"<class '__main__.Person'>"

5.3. 将模块转换为字符串

在Python中,可以通过内置函数str()将模块转换为字符串类型。这可以用于调试和日志记录等应用场景。

import math

math_str = str(math)
print(math_str)  # 输出:"<module 'math' (built-in)>"

5.4. 将字符串转换为Python对象

在Python中,可以使用内置函数eval()将字符串转换为Python对象。例如:


str_dict = "{'a': 1, 'b': 2}"
d = eval(str_dict)
print(d)  # 输出:{'a': 1, 'b': 2}

需要注意的是,使用eval()函数时,输入的字符串必须是合法的Python表达式。如果输入的字符串无法解析为Python表达式,将会抛出一个SyntaxError异常。此外,由于eval()函数具有执行任意代码的风险,因此在使用时需要格外小心。