百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 数据转换详解(python将数据转换为字符串)

off999 2025-06-10 00:34 14 浏览 0 评论

数据转换是编程中非常重要的操作,Python 提供了多种方式来实现不同类型之间的转换。下面我将详细讲解 Python 中的各种数据转换方法。

一、基本数据类型转换

1. 数字类型之间的转换

# 整数转浮点数
num_int = 10
num_float = float(num_int)  # 10.0

# 浮点数转整数(会截断小数部分)
num_float = 3.14
num_int = int(num_float)  # 3

# 布尔值转数字
bool_true = True
num_from_bool = int(bool_true)  # 1

bool_false = False
num_from_bool = int(bool_false)  # 0

2. 字符串与数字的转换

# 字符串转整数
str_num = "123"
int_num = int(str_num)  # 123

# 字符串转浮点数
str_float = "3.14"
float_num = float(str_float)  # 3.14

# 数字转字符串
num = 42
str_num = str(num)  # "42"

# 注意:无效转换会引发 ValueError
try:
    invalid = int("hello")
except ValueError as e:
    print(f"错误: {e}")

3. 布尔值转换

# 其他类型转布尔
# 以下会转换为 False
print(bool(0))      # False
print(bool(0.0))    # False
print(bool(""))     # False
print(bool([]))     # False
print(bool({}))     # False
print(bool(None))   # False

# 其他值通常转换为 True
print(bool(1))      # True
print(bool(-1))     # True
print(bool(" "))    # True
print(bool([1]))    # True

二、容器类型转换

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](顺序可能不同)

# 字典转列表(默认获取键)
my_dict = {'a': 1, 'b': 2}
key_list = list(my_dict)  # ['a', 'b']
value_list = list(my_dict.values())  # [1, 2]
item_list = list(my_dict.items())  # [('a', 1), ('b', 2)]

# 字符串转列表
my_str = "hello"
char_list = list(my_str)  # ['h', 'e', 'l', 'l', 'o']

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)(顺序可能不同)

# 字典转元组
my_dict = {'a': 1, 'b': 2}
key_tuple = tuple(my_dict)  # ('a', 'b')

3. 集合(set)转换

# 列表转集合(自动去重)
my_list = [1, 2, 2, 3]
my_set = set(my_list)  # {1, 2, 3}

# 字符串转集合
my_str = "hello"
char_set = set(my_str)  # {'h', 'e', 'l', 'o'}(去重且无序)

4. 字典(dict)转换

# 键值对列表转字典
pairs = [('a', 1), ('b', 2)]
my_dict = dict(pairs)  # {'a': 1, 'b': 2}

# 两个列表转字典(使用zip)
keys = ['a', 'b']
values = [1, 2]
my_dict = dict(zip(keys, values))  # {'a': 1, 'b': 2}

# 字典推导式
my_dict = {k: v for k, v in pairs}  # {'a': 1, 'b': 2}

三、高级数据转换

1. 进制转换

# 十进制转其他进制字符串
num = 255
print(bin(num))  # '0b11111111'(二进制)
print(oct(num))  # '0o377'(八进制)
print(hex(num))  # '0xff'(十六进制)

# 其他进制字符串转十进制
print(int('0b11111111', 2))  # 255
print(int('0o377', 8))      # 255
print(int('0xff', 16))      # 255

2. ASCII码转换

# 字符转ASCII码
print(ord('A'))  # 65

# ASCII码转字符
print(chr(65))   # 'A'

3. 字节(bytes)转换

# 字符串转字节
my_str = "hello"
byte_data = my_str.encode('utf-8')  # b'hello'

# 字节转字符串
new_str = byte_data.decode('utf-8')  # 'hello'

# 整数列表转字节
int_list = [65, 66, 67]
byte_data = bytes(int_list)  # b'ABC'

4. JSON转换

import json

# Python对象转JSON字符串
data = {'name': 'Alice', 'age': 25}
json_str = json.dumps(data)  # '{"name": "Alice", "age": 25}'

# JSON字符串转Python对象
new_data = json.loads(json_str)  # {'name': 'Alice', 'age': 25}

四、自定义对象转换

1. 实现__str__和__repr__

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"Person(name={self.name}, age={self.age})"
    
    def __repr__(self):
        return f"Person('{self.name}', {self.age})"

p = Person("Alice", 25)
print(str(p))   # Person(name=Alice, age=25)
print(repr(p))  # Person('Alice', 25)

2. 实现转换方法

class Temperature:
    def __init__(self, celsius):
        self.celsius = celsius
    
    def to_fahrenheit(self):
        return (self.celsius * 9/5) + 32

temp = Temperature(100)
print(temp.to_fahrenheit())  # 212.0

五、注意事项

类型安全:转换前最好检查类型或使用try-except处理可能的异常

try:
    num = int("123a")
except ValueError:
    print("无法转换为整数")

精度丢失:浮点数转整数会截断小数部分

print(int(3.99))  # 3(不是4)

隐式转换:某些操作会自动进行类型转换

print(1 + 2.0)  # 3.0(整数自动转为浮点数)

不可逆转换:某些转换会丢失信息且不可逆

original = [1, 2, 2, 3]
converted = set(original)  # {1, 2, 3}
# 无法恢复原始列表的顺序和重复元素

一看就会,一写就废,你学废了吗?

相关推荐

python import 出现 ModuleNotFoundError 解决方法

错误的原因是你的Python环境没有正确安装库文件。本文以Scapy为例,给出详细方案:1.确认是否成功安装Scapy运行以下命令检查Scapy是否已安装:pip3list|gre...

Github 7.4k star,一个强大的 Python 库-sh!

大家好,今天为大家分享一个强大的Python库-sh。Github地址:https://github.com/amoffat/shsh库是Python生态系统中一个专门用于执行系统命令的第三方...

学习编程第148天 python编程循环的嵌套使用

今天学习的是刘金玉老师零基础Python教程第32期,主要内容是python编程循环的嵌套使用。(一)一维数组及输出#一维数组list1=["110001","四川二流子...

2025-07-09:使数组元素互不相同所需的最少操作次数。用go语言,

2025-07-09:使数组元素互不相同所需的最少操作次数。用go语言,给定一个整数数组nums和一个整数k,对于数组中的每个元素,你最多可以对其进行一次操作:将一个在区间[-k,k]内的...

python数据分析numpy基础之max求数组最大值

1python数据分析numpy基础之max求数组最大值python的numpy库的max()函数,用于计算沿指定轴(一个轴或多个轴)的最大值。用法numpy.max(a,axis=None,...

加快Python算法的四个方法(四)Dask

CDA数据分析师出品相信大家在做一些算法经常会被庞大的数据量所造成的超多计算量需要的时间而折磨的痛苦不已,接下来我们围绕四个方法来帮助大家加快一下Python的计算时间,减少大家在算法上的等待时间。...

六十六、Leetcode数组系列(中篇)(leetcode679)

@Author:Runsen@Date:2020/6/8人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难...

Numpy中的ndarray是什么?('numpy.ndarray' object has no attribute 'append')

1.创建ndarray创建数组最简单的办法就是使用array函数。它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。np.array会尝试为新建的这个数组推断出一个...

Python中的数据导入与查询(python怎样导入数据库)

适用场景:快速导入文本/Excel数据→Pandas读取大型数值数据→Numpy处理复杂二进制文件→h5py/scipy.io数据库交互→SQLAlchemy+Pandas一、数据...

2025-07-02:统计数组中的美丽分割。用go语言,给定一个整数数组

2025-07-02:统计数组中的美丽分割。用go语言,给定一个整数数组nums,我们要把它划分成三个连续且非空的子数组nums1、nums2、nums3,且这三个子数组按顺序拼接后还原为原数组...

2025-07-10:字符相同的最短子字符串Ⅰ。用go语言,给定一个长度

2025-07-10:字符相同的最短子字符串Ⅰ。用go语言,给定一个长度为n的二进制字符串s和一个允许执行的最大操作次数numOps。每次操作可以选择字符串中的任意一个位置i(0≤i...

2025-06-19:识别数组中的最大异常值。用go语言,你有一个长度为

2025-06-19:识别数组中的最大异常值。用go语言,你有一个长度为n的整数数组nums,其中恰好有n-2个元素属于“特殊数字”类别。剩下的两个元素中,一个等于所有这些特殊数字的总和,另...

2025-06-28:长度可被 K 整除的子数组的最大元素和。用go语言,给

2025-06-28:长度可被K整除的子数组的最大元素和。用go语言,给定一个整数数组nums和一个整数k,求nums中长度为k的倍数的非空子数组中,子数组和的最大值。返回该最大和...

在 Python 中如何向一个已排序的数组(列表) 中插入一个数呢

在Python中如何向一个已排序的数组(列表)中插入一个数呢?方法有很多种,关键在于原来数组是什么样的排序,用到啥排序方法效率高,就用哪种。我们来练习其中的几种插入方法,另外也掌握下遍历数组的...

2025-07-04:统计符合条件长度为 3 的子数组数目。用go语言,给定

2025-07-04:统计符合条件长度为3的子数组数目。用go语言,给定一个整数数组nums,请你计算有多少个长度恰好为3的连续子数组满足这样的条件:子数组的第一个元素与第三个元素的和,正好...

取消回复欢迎 发表评论: