欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 从零开始:Python语言基础之数据类型

从零开始:Python语言基础之数据类型

2025/5/22 6:18:41 来源:https://blog.csdn.net/2401_85596708/article/details/148110022  浏览:    关键词:从零开始:Python语言基础之数据类型

  一、数值类型:精确与高效的计算基石

 

1.1 整数(int)

 

Python的整数类型具有无限精度的特性,这意味着无论数字多大,Python都能精确表示,不受固定字节数限制。

# 计算超大整数
big_number = 2**1000
print(len(str(big_number)))  # 输出302,表明结果为302位整数

此外,Python还对小整数(范围通常为 -5 到 256)进行了对象池优化,相同值的小整数对象在内存中只会创建一次。

a = 10
b = 10
print(a is b)  # 输出True,a和b指向同一对象

1.2 浮点数(float)

 

浮点数基于IEEE 754标准存储,采用二进制表示小数。这种机制会导致部分十进制小数无法精确转换为二进制,从而产生精度误差。

result = 0.1 + 0.2
print(result == 0.3)  # 输出False

为解决精度问题,可使用 decimal 模块实现高精度计算:

from decimal import Decimal
correct_result = Decimal('0.1') + Decimal('0.2')
print(correct_result == Decimal('0.3'))  # 输出True

1.3 复数(complex)

 

复数由实部和虚部组成,形式为 a + bj ,其中 a 为实部, b 为虚部。Python提供了完整的复数运算支持。

z1 = 3 + 4j
z2 = 2 - 1j
print(z1 * z2)  # 输出(10+5j)
print(z1.real)  # 输出3.0,获取实部
print(z1.imag)  # 输出4.0,获取虚部

二、序列类型:有序数据的管理利器

 

2.1 字符串(str)

 

字符串是不可变的Unicode字符序列,支持丰富的操作和方法。

 

①索引与切片:通过索引获取单个字符,使用切片提取子串。

s = "Hello, Python!"
print(s[0])  # 输出'H'
print(s[7:13])  # 输出'Python'

②字符串格式化:Python提供了多种格式化方式。

name = "Alice"
age = 25
# %格式化
print("姓名:%s,年龄:%d" % (name, age))
# str.format()方法
print("姓名:{},年龄:{}".format(name, age))
# f-string(Python 3.6+)
print(f"姓名:{name},年龄:{age}")

③常见方法: upper() 转大写、 lower() 转小写、 split() 分割字符串等。

 

2.2 列表(list)

 

列表是可变的有序序列,元素可以是任意数据类型。

fruits = ["apple", "banana", "cherry"]
fruits.append("orange")  # 在末尾添加元素
fruits[1] = "pear"  # 修改元素
fruits.insert(0, "grape")  # 在指定位置插入元素
fruits.remove("cherry")  # 删除指定元素

列表的底层实现为动态数组,在添加元素时会自动扩容,平均时间复杂度为O(1)。

 

2.3 元组(tuple)

 

元组是不可变的有序序列,一旦创建就不能修改元素。

point = (10, 20)
# point[0] = 30  # 报错,元组不可变

虽然元组本身不可变,但如果元组中包含可变对象(如列表),则可变对象的内容可以修改。

t = ([1, 2], 3)
t[0].append(4)  # 合法操作,修改嵌套列表内容
print(t)  # 输出([1, 2, 4], 3)

三、映射类型:键值对存储的高效方案

 

3.1 字典(dict)

 

字典以键值对形式存储数据,通过哈希表实现快速查找。

person = {"name": "Bob","age": 30,"city": "New York"
}
print(person["name"])  # 输出Bob
person["age"] = 31  # 修改值
person["job"] = "Engineer"  # 添加新键值对
del person["city"]  # 删除键值对

字典的键必须是可哈希的(如字符串、元组),值可以是任意类型。常见的字典方法包括 keys() 、 values() 、 items() 等。

 

四、集合类型:去重与集合运算的神器

 

4.1 集合(set)

 

集合是无序、不重复的数据集合,支持数学集合运算。

s = {1, 2, 3, 2}  # 自动去重,结果为{1, 2, 3}
s.add(4)  # 添加元素
s.remove(2)  # 删除元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 & s2)  # 交集,输出{2, 3}
print(s1 | s2)  # 并集,输出{1, 2, 3, 4}
print(s1 - s2)  # 差集,输出{1}

由于集合内部基于哈希表实现,判断元素是否存在的平均时间复杂度为O(1)。

 

五、其他数据类型:特殊场景的得力助手

 

5.1 布尔类型(bool)

 

布尔类型只有两个取值: True 和 False ,常用于条件判断。布尔值继承自整数类型, True 等效于1, False 等效于0。

is_valid = True
result = 10 > 5  # 结果为True

5.2 NoneType

 

 None 是 NoneType 类型的唯一值,表示空值或未初始化的变量。

x = None
if x is None:print("x为空")

 

六、数据类型转换:灵活处理数据的关键

 

Python提供了丰富的类型转换函数,包括:

 

①数值转换: int() 、 float() 、 complex() 

②序列转换: list() 、 tuple() 、 set() 

③其他转换: str() 、 dict() 

num_str = "123"
num = int(num_str)  # 转换为整数123
lst = list((1, 2, 3))  # 元组转换为列表[1, 2, 3]

  

七、常见问题与解决方案

 

7.1 类型错误(TypeError)

 

问题:不同类型数据进行不兼容操作,如字符串与整数相加。

# 错误示例
s = "hello"
num = 10
result = s + num  # TypeError: can only concatenate str to str

解决方案:使用类型转换函数确保数据类型一致。

result = s + str(num)  # 输出'hello10'

7.2 精度误差问题

 

问题:浮点数运算产生精度误差。

解决方案:使用 decimal 模块或 fractions 模块(处理分数)。

 

7.3 不可哈希类型错误

 

问题:尝试将不可哈希类型(如列表)作为字典键。

# 错误示例
d = {[1, 2]: "value"}  # TypeError: unhashable type: 'list'

解决方案:将不可哈希类型转换为可哈希类型(如元组)。

 

八、总结

 

Python的数据类型体系丰富且灵活,每种类型都有其独特的设计目的和适用场景。掌握数据类型的特性、操作方法及常见问题解决方案,是编写高效、健壮Python程序的基础。通过不断实践和总结,开发者可以更好地利用这些工具,解决实际编程中的复杂问题。无论是处理数值计算、文本分析,还是构建数据结构,扎实的数据类型知识都是不可或缺的核心能力。

欢迎您的关注,我将持续更新

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词