Python数据结构深度解析

目录

引言

1. 列表(List)

示例1: 创建和基本操作

示例2: 列表推导式

2. 元组(Tuple)

示例3: 创建和使用元组

示例4: 元组解包

3. 集合(Set)

示例5: 创建和操作集合

示例6: 集合运算

4. 字典(Dictionary)

示例7: 创建和访问字典

示例8: 字典推导式

5. 队列和栈

示例9: 使用列表实现栈(后进先出)

示例10: 使用collections.deque实现队列(先进先出)

进阶应用示例

示例11: 列表的多维排序

示例12: 元组中的命名元组

示例13: 集合的推导式

示例14: 字典的合并

示例15: 列表的嵌套解包

示例16: 使用deque实现双端队列

示例17: 字典的默认值

示例18: 列表的切片赋值

示例19: 使用filter函数过滤列表

示例20: 使用zip合并列表


引言

Python是一种功能强大的编程语言,拥有丰富的内置数据结构。这些数据结构是理解和有效使用Python的关键。本文将深入探讨Python中最常见的数据结构,通过具体示例展示它们的用法和特性。

1. 列表(List)

列表是Python中最基本的数据结构,用于存储元素的有序集合。

示例1: 创建和基本操作

# 创建列表
my_list = [1, 2, 3, 'Python', True]

# 索引
print(my_list[3])  # 输出: Python

# 切片
print(my_list[1:4])  # 输出: [2, 3, 'Python']

# 添加元素
my_list.append('New')
print(my_list)  # 输出: [1, 2, 3, 'Python', True, 'New']

# 删除元素
my_list.remove(True)
print(my_list)  # 输出: [1, 2, 3, 'Python', 'New']

示例2: 列表推导式

# 使用列表推导式创建平方数列表
squares = [x**2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

2. 元组(Tuple)

元组是不可变的序列,用于存储一组相关的项。

示例3: 创建和使用元组

# 创建元组
my_tuple = (1, 'hello', 3.14)

# 索引
print(my_tuple[1])  # 输出: hello

# 尝试修改元组(会报错)
# my_tuple[1] = 'world'

示例4: 元组解包

# 元组解包
a, b, c = my_tuple
print(b)  # 输出: hello

3. 集合(Set)

集合是无序的,每个元素唯一的数据结构,常用于去重。

示例5: 创建和操作集合

# 创建集合
my_set = {1, 2, 3, 4, 5}

# 添加元素
my_set.add(6)
print(my_set)  # 输出: {1, 2, 3, 4, 5, 6}

# 删除元素
my_set.remove(6)
print(my_set)  # 输出: {1, 2, 3, 4, 5}

示例6: 集合运算

a = {1, 2, 3}
b = {3, 4, 5}

# 交集
print(a & b)  # 输出: {3}

# 并集
print(a | b)  # 输出: {1, 2, 3, 4, 5}

# 差集
print(a - b)  # 输出: {1, 2}

4. 字典(Dictionary)

字典是一种映射类型,用于存储键值对。

示例7: 创建和访问字典

# 创建字典
my_dict = {'name': 'Alice', 'age': 25}

# 访问字典
print(my_dict['name'])  # 输出: Alice

# 添加新的键值对
my_dict['email'] = 'alice@example.com'
print(my_dict)  # 输出: {'name': 'Alice', 'age': 25, 'email': 'alice@example.com'}

示例8: 字典推导式

# 使用字典推导式创建字典
squares_dict = {x: x*x for x in range(6)}
print(squares_dict)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

5. 队列和栈

Python可以使用列表来实现队列和栈的功能。

示例9: 使用列表实现栈(后进先出)

stack = []
# 入栈
stack.append('a')
stack.append('b')
stack.append('c')
print(stack)  # 输出: ['a', 'b', 'c']

# 出栈
print(stack.pop())  # 输出: c
print(stack)  # 输出: ['a', 'b']

示例10: 使用collections.deque实现队列(先进先出)

from collections import deque

queue = deque(['a', 'b', 'c'])
# 入队
queue.append('d')
print(queue)  # 输出: deque(['a', 'b', 'c', 'd'])

# 出队
print(queue.popleft())  # 输出: a
print(queue)  # 输出: deque(['b', 'c', 'd'])

进阶应用示例

示例11: 列表的多维排序

data = [(2, 5), (1, 2), (4, 4), (2, 3), (2, 1)]
# 根据多个关键字排序
data.sort(key=lambda x: (x[0], x[1]))
print(data)  # 输出: [(1, 2), (2, 1), (2, 3), (2, 5), (4, 4)]

示例12: 元组中的命名元组

 
from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
pt = Point(1, 2)
print(pt.x, pt.y)  # 输出: 1 2

示例13: 集合的推导式

squared = {x**2 for x in [1, 1, 2]}
print(squared)  # 输出: {1, 4}

示例14: 字典的合并

d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
merged = {**d1, **d2}
print(merged)  # 输出: {'a': 1, 'b': 3, 'c': 4}

示例15: 列表的嵌套解包

a, [b, c] = [1, (2, 3)]
print(a, b, c)  # 输出: 1 2 3

示例16: 使用deque实现双端队列

dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)
print(dq)  # 输出: deque([0, 1, 2, 3, 4])

示例17: 字典的默认值

from collections import defaultdict

dd = defaultdict(int)
dd['key'] += 1
print(dd['key'])  # 输出: 1

示例18: 列表的切片赋值

lst = [1, 2, 3, 4, 5]
lst[1:4] = [7, 8, 9]
print(lst)  # 输出: [1, 7, 8, 9, 5]

示例19: 使用filter函数过滤列表

numbers = range(-5, 5)
less_than_zero = list(filter(lambda x: x < 0, numbers))
print(less_than_zero)  # 输出: [-5, -4, -3, -2, -1]

示例20: 使用zip合并列表

a = [1, 2, 3]
b = ['a', 'b', 'c']
zipped = zip(a, b)
print(list(zipped))  # 输出: [(1, 'a'), (2, 'b'), (3, 'c')]

这些示例展示了Python数据结构的灵活性和强大功能。理解这些基本的数据结构对于编写高效、优雅的Python代码至关重要。希望这些示例能够帮助你更深入地了解Python,并在实际项目中灵活运用这些结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值