Python从入门到实战之数据结构篇

  • Post category:Python

Python从入门到实战之数据结构篇

什么是数据结构

数据结构是计算机存储、组织数据的方式。它是指相互之间存在一种或多种特定关系的数据元素集合。数据结构包括数组、链表、栈、队列、树、图等。

Python中的数据结构

Python中内置了许多数据结构,包括列表、元组、字典、集合等。下面将分别介绍这些数据结构。

列表

列表是Python中最常用的数据结构之一,它是一个有序的集合,可以存储任意类型的对象。列表使用方括号[]来表示,元素之间使用逗号分隔。下面是一个示例,演示了如何创建一个列表:

# 创建一个列表
lst = [1, 2, 3, 4, 5]
print(lst)  # [1, 2, 3, 4, 5]

在这个例子中,我们使用方括号[]创建了一个列表lst,包含5个整数元素。然后,我们输出lst,得到[1, 2, 3, 4, 5]。

列表是可变的,可以随意添加、删除和修改元素。下面是一些示例,演示了如何添加、删除和修改列表中的元素:

# 添加素
lst.append(6)
print(lst)  # [1, 2, 3, 4, 5, 6]

# 删除元素
lst.remove(3)
print(lst)  # [1, 2, 4, 5, 6]

# 修改元素
lst[0] = 0
print(lst)  # [0, 2, 4, 5, 6]

在这些示例中,我们使用append()方法向列表中添加一个元素,使用remove()方法删除一个元素,使用索引操作修改一个元素。

元组

元组是Python中另一个常用的数据结构,它是一个有序的集合,可以存储任意类型的对象。元组使用小括号()来表示,元素之间使用逗号分隔。下面是一个示例,演示了如何创建一个元组:

# 创建一个元组
tup = (1, 2, 3, 4, 5)
print(tup)  # (1, 2, 3, 4, 5)

在这个例子中,我们使用小括号()创建了一个元组tup,包含5个整数元素。然后,我们输出tup,得到(1, 2, 3, 4, 5)。

元组是不可变的,一旦创建就不能修改。如果我们尝试修改元组中的元素,Python会抛出TypeError异常。下面是一个示例,演示了如何尝试修改元组中的元素:

# 尝试修改元组中的元素
tup = (1, 2, 3, 4, 5)
tup[0] = 0  # TypeError: 'tuple' object does not support item assignment

在这个例子中,我们尝试将元组tup中的第一个元素修改为0,但是Python抛出了TypeError异常,提示元组不支持元素赋值操作。

字典

字典是Python中另一个重要的数据结构,它是一个无序的键值对集合。字典使用花括号{}来表示,每个键值对之间使用冒号:分隔,键值对之间使用逗号分隔。下面是一个示例,演示了如何创建一个字典:

# 创建一个字典
dic = {'name': 'Tom', 'age': 18, 'gender': 'male'}
print(dic)  # {'name': 'Tom', 'age': 18, 'gender': 'male'}

在这个例子中,我们使用花括号{}创建了一个字典dic,包含3个键值。然后,我们输出dic,得到{‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}。

字典中的键必须是不可变的,可以是字符串、数字或元组等不可变类型。值可以是任意类型的对象。下面是一些示例,演示了如何添加、删除和修改字典中的键值对:

# 添加键值对
dic['address'] = 'Beijing'
print(dic)  # {'name': 'Tom', 'age': 18, 'gender': 'male', 'address': 'Beijing'}

# 删除键值对
del dic['gender']
print(dic)  # {'name': 'Tom', 'age': 18, 'address': 'Beijing'}

# 修改键值对
dic['age'] = 20
print(dic)  # {'name': 'Tom', 'age': 20, 'address': 'Beijing'}

在这些示例中,我们使用索引操作添加、删除和修改字典中的键值对。

集合

集合是Python中另一个常用的数据结构,它是一个无序的不重复元素集合。集合使用花括号{}来表示,元素之间使用逗号分隔。下面是一个示例,演示了如何创建一个集合:

# 创建一个集合
s = {1, 2, 3, , 5}
print(s)  # {1, 2, 3, 4, 5}

在这个例子中,我们使用花括号{}创建了一个集合s,包含5个整数元素。然后,我们输出s,得到{1, 2, 3, 4, 5}。

集合中的元素必须是不可变的,可以是字符串、数字或元组等不可变类型。下面是一些示例,演示了如添加、删除和修改集合中的元素:

# 添加元素
s.add(6)
print(s)  # {1, 2, , 4, 5, 6}

# 删除元素
s.remove(3)
print(s)  # {1, 2, 4, 5, 6}

在这些示例中,我们使用add()方法向集合中添加一个元素,使用remove()方法删除一个元素。

示例说明

示例一:使用列表实现栈

栈是一种后进先出(LIFO)的数据结构,可以使用列表来实现。下面是一个示例,演示了如何使用列表实现栈:

# 使用列表实现栈
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print(stack)  # [1, 2, 3]
stack.pop()
print(stack)  # [1, 2]

在这个例子中,我们使用列表stack来实现栈,使用append()方法向栈中添加元素,使用pop()方法从栈中弹出元素。

示例二:使用字典实现图

图是一种由节点和边组成的数据结构,可以使用字典来实现。下面是一个示例,演示了如何使用字典实现图:

# 使用字典实现图
graph = {'A': ['B', 'C'],
         'B': ['C', 'D'],
         'C': ['D'],
         'D': ['C'],
         'E': ['F'],
         'F': ['C']}
print(graph)  # {'A': ['B', 'C'], 'B': ['C', 'D'], 'C': ['D'], 'D': ['C'], 'E': ['F'], 'F': ['C']}

在这个例子中,我们使用字典graph来实现图,每个键表示一个节点,对应的值是一个列表,表示与该节点相邻的节点。

总结

Python中内置了许多数据结构,包括列表、元组、字典、集合等。这些数据结构可以用于存储和组织数据,实现各种算法和数据处理任务。无论使用哪种数据结构,我们都需要注意代码的可读性和效率,以便更好地维护和扩展程序。