目录
引言
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中最常见的数据结构,通过具体示例展示它们的用法和特性。
列表是Python中最基本的数据结构,用于存储元素的有序集合。
# 创建列表
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']
# 使用列表推导式创建平方数列表
squares = [x**2 for x in range(10)]
print(squares) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
元组是不可变的序列,用于存储一组相关的项。
# 创建元组
my_tuple = (1, 'hello', 3.14)
# 索引
print(my_tuple[1]) # 输出: hello
# 尝试修改元组(会报错)
# my_tuple[1] = 'world'
# 元组解包
a, b, c = my_tuple
print(b) # 输出: hello
集合是无序的,每个元素唯一的数据结构,常用于去重。
# 创建集合
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}
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}
字典是一种映射类型,用于存储键值对。
# 创建字典
my_dict = {'name': 'Alice', 'age': 25}
# 访问字典
print(my_dict['name']) # 输出: Alice
# 添加新的键值对
my_dict['email'] = '[email protected]'
print(my_dict) # 输出: {'name': 'Alice', 'age': 25, 'email': '[email protected]'}
# 使用字典推导式创建字典
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}
Python可以使用列表来实现队列和栈的功能。
stack = []
# 入栈
stack.append('a')
stack.append('b')
stack.append('c')
print(stack) # 输出: ['a', 'b', 'c']
# 出栈
print(stack.pop()) # 输出: c
print(stack) # 输出: ['a', 'b']
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'])
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)]
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
pt = Point(1, 2)
print(pt.x, pt.y) # 输出: 1 2
squared = {x**2 for x in [1, 1, 2]}
print(squared) # 输出: {1, 4}
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
merged = {**d1, **d2}
print(merged) # 输出: {'a': 1, 'b': 3, 'c': 4}
a, [b, c] = [1, (2, 3)]
print(a, b, c) # 输出: 1 2 3
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)
print(dq) # 输出: deque([0, 1, 2, 3, 4])
from collections import defaultdict
dd = defaultdict(int)
dd['key'] += 1
print(dd['key']) # 输出: 1
lst = [1, 2, 3, 4, 5]
lst[1:4] = [7, 8, 9]
print(lst) # 输出: [1, 7, 8, 9, 5]
numbers = range(-5, 5)
less_than_zero = list(filter(lambda x: x < 0, numbers))
print(less_than_zero) # 输出: [-5, -4, -3, -2, -1]
a = [1, 2, 3]
b = ['a', 'b', 'c']
zipped = zip(a, b)
print(list(zipped)) # 输出: [(1, 'a'), (2, 'b'), (3, 'c')]
这些示例展示了Python数据结构的灵活性和强大功能。理解这些基本的数据结构对于编写高效、优雅的Python代码至关重要。希望这些示例能够帮助你更深入地了解Python,并在实际项目中灵活运用这些结构。