Practical Python项目:Python数据类型与数据结构详解
前言
在Python编程中,理解数据类型和数据结构是构建任何程序的基础。本文将深入探讨Python中的基本数据类型以及两种重要的数据结构——元组(tuple)和字典(dictionary),这些知识是dabeaz-course/practical-python项目中的重要内容。
Python基本数据类型
Python提供了几种基本数据类型:
- 整数(Integers):如42,-17
- 浮点数(Floating point numbers):如3.14,-0.001
- 字符串(Strings):如"hello",'Python'
这些基本类型在前面的课程中已经介绍过,它们是构建更复杂数据结构的基础。
None类型
None
是Python中表示空值或缺失值的特殊类型:
email_address = None
在条件判断中,None
会被视为False
:
if email_address:
send_email(email_address, msg)
数据结构的重要性
实际编程中,我们需要处理更复杂的数据。例如,一个股票持仓信息:
100 shares of GOOG at $490.10
这实际上是一个包含三个部分的对象:
- 股票代码("GOOG",字符串)
- 持股数量(100,整数)
- 股票价格(490.10,浮点数)
元组(Tuple)
元组基础
元组是将多个值组合在一起的不可变序列:
s = ('GOOG', 100, 490.1)
# 括号可以省略
s = 'GOOG', 100, 490.1
特殊情况的元组:
t = () # 空元组
w = ('GOOG',) # 单元素元组(注意逗号)
元组的特性
元组常用于表示简单的记录或结构,类似于数据库表中的一行数据。
访问元组元素:
name = s[0] # 'GOOG'
shares = s[1] # 100
price = s[2] # 490.1
元组是不可变的:
s[1] = 75 # 会引发TypeError
但可以创建新元组:
s = (s[0], 75, s[2])
元组打包与解包
打包是将多个值组合成一个元组:
s = ('GOOG', 100, 490.1)
解包是将元组的值分配给多个变量:
name, shares, price = s
print('Cost', shares * price)
注意变量数量必须与元组元素数量匹配。
字典(Dictionary)
字典是键值对的集合,也称为哈希表或关联数组。
s = {
'name': 'GOOG',
'shares': 100,
'price': 490.1
}
字典操作
访问值:
print(s['name'], s['shares']) # 输出: GOOG 100
修改或添加值:
s['shares'] = 75
s['date'] = '6/6/2007'
删除值:
del s['date']
字典的优势
字典使代码更易读:
s['price'] # 清晰
s[2] # 不清晰
元组与列表的比较
虽然元组和列表看起来很相似,但它们有不同的用途:
- 元组:用于表示一个包含多个部分的单一对象
- 列表:用于存储多个独立对象,通常类型相同
# 元组表示投资组合中的一条记录
record = ('GOOG', 100, 490.1)
# 列表表示多个股票代码
symbols = ['GOOG', 'AAPL', 'IBM']
实践练习
练习1:使用元组处理数据
从CSV文件中读取的数据通常是字符串形式,我们需要转换为适当类型:
row = ['AA', '100', '32.20']
t = (row[0], int(row[1]), float(row[2])) # ('AA', 100, 32.2)
计算总成本时注意浮点数精度问题:
cost = t[1] * t[2] # 3220.0000000000005
print(f'{cost:0.2f}') # 3220.00
练习2:使用字典处理数据
字典提供了更灵活的数据表示方式:
d = {
'name': row[0],
'shares': int(row[1]),
'price': float(row[2])
}
计算成本:
cost = d['shares'] * d['price']
修改和添加属性:
d['shares'] = 75
d['date'] = (6, 11, 2007)
练习3:字典的高级操作
获取所有键:
list(d) # ['name', 'shares', 'price', 'date']
遍历字典:
for k in d:
print(k, '=', d[k])
使用items()方法:
for k, v in d.items():
print(k, '=', v)
从元组列表创建字典:
items = [('name', 'AA'), ('shares', 75), ('price', 32.2)]
d = dict(items)
总结
本文详细介绍了Python中的基本数据类型和两种重要的数据结构——元组和字典。元组适合表示不可变的简单记录,而字典则提供了更灵活的键值对存储方式。理解这些数据结构的特点和适用场景,对于编写清晰、高效的Python代码至关重要。
在实际编程中,应根据数据的特点和操作需求选择合适的数据结构。对于简单的、不需要修改的数据记录,元组是很好的选择;而对于需要频繁修改和扩展的复杂数据,字典通常更为合适。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考