Practical Python项目:Python数据类型与数据结构详解

Practical Python项目:Python数据类型与数据结构详解

practical-python Practical Python Programming (course by @dabeaz) practical-python 项目地址: https://gitcode.com/gh_mirrors/pr/practical-python

前言

在Python编程中,理解数据类型和数据结构是构建任何程序的基础。本文将深入探讨Python中的基本数据类型以及两种重要的数据结构——元组(tuple)和字典(dictionary),这些知识是dabeaz-course/practical-python项目中的重要内容。

Python基本数据类型

Python提供了几种基本数据类型:

  1. 整数(Integers):如42,-17
  2. 浮点数(Floating point numbers):如3.14,-0.001
  3. 字符串(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

这实际上是一个包含三个部分的对象:

  1. 股票代码("GOOG",字符串)
  2. 持股数量(100,整数)
  3. 股票价格(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代码至关重要。

在实际编程中,应根据数据的特点和操作需求选择合适的数据结构。对于简单的、不需要修改的数据记录,元组是很好的选择;而对于需要频繁修改和扩展的复杂数据,字典通常更为合适。

practical-python Practical Python Programming (course by @dabeaz) practical-python 项目地址: https://gitcode.com/gh_mirrors/pr/practical-python

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸余煦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值