python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python 数据结构

Python3 数据结构示例详解

作者:小陶coding

本文介绍了Python中的四种基本数据结构——列表、元组、集合和字典,以及如何根据具体需求选择合适的数据结构,文章还展示了如何使用这些数据结构进行基本操作,并提供了示例代码,感兴趣的朋友跟随小编一起看看吧

一、列表(List)

列表是可变的有序的元素集合,用方括号 [] 表示。列表支持异构数据(可包含不同类型的元素)、索引访问、切片操作和动态调整大小。

核心特点:

示例代码:

# 创建列表
fruits = ["apple", "banana", "cherry"]
# 访问元素
print(fruits[0])       # 输出: apple
print(fruits[-1])      # 输出: cherry(负索引从后往前)
# 修改元素
fruits[1] = "grape"    # 列表可变,修改第二个元素
# 切片操作
print(fruits[1:3])     # 输出: ['grape', 'cherry']
# 添加元素
fruits.append("orange")  # 在末尾添加元素
fruits.insert(1, "lemon")  # 在指定位置插入元素
# 删除元素
fruits.remove("apple")   # 删除指定值的元素
popped = fruits.pop()    # 删除并返回最后一个元素
# 列表操作
print(len(fruits))       # 输出: 3(列表长度)
print("grape" in fruits) # 输出: True(元素是否存在)

二、元组(Tuple)

元组是不可变的有序的元素集合,用圆括号 () 表示。元组一旦创建,其元素不能被修改、添加或删除,适合存储不可变数据(如坐标、配置参数)。

核心特点:

示例代码:

# 创建元组
coordinates = (10, 20)
person = ("Alice", 30, "Engineer")
# 访问元素
print(coordinates[0])    # 输出: 10
# 元组不可变(以下代码会报错)
# coordinates[0] = 5     # TypeError: 'tuple' object does not support item assignment
# 元组操作
new_coords = coordinates + (30,)  # 拼接元组
print(new_coords)                # 输出: (10, 20, 30)
print(person.count("Engineer"))  # 输出: 1(元素出现次数)
print(person.index(30))          # 输出: 1(元素首次出现的索引)

三、集合(Set)

集合是无序的唯一的元素集合,用花括号 {} 或 set() 函数创建。集合主要用于去重和成员检测,支持数学集合运算(如并集、交集、差集)。

核心特点:

示例代码:

# 创建集合
fruits_set = {"apple", "banana", "cherry"}
empty_set = set()  # 注意:{} 创建的是空字典,必须用 set() 创建空集合
# 自动去重
numbers = {1, 2, 2, 3, 3, 3}
print(numbers)     # 输出: {1, 2, 3}
# 添加元素
fruits_set.add("orange")
# 删除元素
fruits_set.remove("apple")  # 元素不存在时会报错
fruits_set.discard("grape") # 元素不存在时不会报错
# 集合运算
set_a = {1, 2, 3}
set_b = {3, 4, 5}
print(set_a | set_b)        # 并集: {1, 2, 3, 4, 5}
print(set_a & set_b)        # 交集: {3}
print(set_a - set_b)        # 差集: {1, 2}
print(set_a ^ set_b)        # 对称差集: {1, 2, 4, 5}

四、字典(Dictionary)

字典是可变的无序的键值对(key-value)集合,用花括号 {} 表示。字典通过键来快速查找对应的值,键必须是唯一且不可变的(如字符串、数字、元组)。

核心特点:

示例代码:

# 创建字典
person = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}
# 访问值
print(person["name"])      # 输出: Alice
print(person.get("age"))   # 输出: 30(使用 get() 避免键不存在时的错误)
# 修改值
person["age"] = 31         # 更新年龄
# 添加新键值对
person["job"] = "Engineer"
# 删除键值对
del person["city"]         # 删除指定键
popped_value = person.pop("age")  # 删除并返回指定键的值
# 字典操作
print(len(person))         # 输出: 2(键值对数量)
print("name" in person)    # 输出: True(检查键是否存在)
print(person.keys())       # 输出: dict_keys(['name', 'job'])
print(person.values())     # 输出: dict_values(['Alice', 'Engineer'])
print(person.items())      # 输出: dict_items([('name', 'Alice'), ('job', 'Engineer')])

五、选择合适的数据结构

根据场景选择数据结构时,可参考以下原则:

六、自定义数据结构

除了内置数据结构,Python 还支持通过类(Class)自定义数据结构。例如,实现一个简单的栈(Stack):

class Stack:
    def __init__(self):
        self.items = []  # 使用列表存储元素
    def is_empty(self):
        return len(self.items) == 0
    def push(self, item):
        self.items.append(item)  # 入栈操作
    def pop(self):
        if self.is_empty():
            raise Exception("Stack is empty")
        return self.items.pop()  # 出栈操作
    def peek(self):
        if self.is_empty():
            raise Exception("Stack is empty")
        return self.items[-1]    # 返回栈顶元素
    def size(self):
        return len(self.items)   # 返回栈的大小
# 使用自定义栈
stack = Stack()
stack.push(1)
stack.push(2)
print(stack.pop())  # 输出: 2
print(stack.peek()) # 输出: 1

通过掌握这些数据结构及其适用场景,你可以更高效地组织和处理数据,提升代码的可读性和性能。

到此这篇关于Python3 数据结构示例详解的文章就介绍到这了,更多相关Python 数据结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文