Python3数据结构示例详解

作者:

文章目录
  • 列表是可变的、有序的元素集合,用方括号 [] 表示。列表支持异构数据(可包含不同类型的元素)、索引访问、切片操作和动态调整大小。
  • 元组是不可变的、有序的元素集合,用圆括号 () 表示。元组一旦创建,其元素不能被修改、添加或删除,适合存储不可变数据(如坐标、配置参数)。
  • 集合是无序的、唯一的元素集合,用花括号 {} 或 set() 函数创建。集合主要用于去重和成员检测,支持数学集合运算(如并集、交集、差集)。
  • 字典是可变的、无序的键值对(key-value)集合,用花括号 {} 表示。字典通过键来快速查找对应的值,键必须是唯一且不可变的(如字符串、数字、元组)。
  • 根据场景选择数据结构时,可参考以下原则: 需要有序且可重复的数据:使用列表(List)。 需要不可变数据:使用元组(Tuple)。 需要去重或集合运算:使用集合(Set)。 需要键值对映射:使用字典(Dictionary)。
  • 除了内置数据结构,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 数据结构内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python数据结构集合的相关详解 Python pyasn库解析和生成ASN.1数据结构 浅谈python数据结构之动态规划 关于Python的高级数据结构与算法 浅谈python中常用的8种经典数据结构 Python中DataFrame与内置数据结构相互转换的实现 Python数据结构队列解决约瑟夫斯问题 Python数据结构栈实现进制转换简单示例 python算法与数据结构朋友圈与水杯实验题分析实例
  • 目录
    • 一、列表(List)
      • 核心特点:
      • 示例代码:
    • 二、元组(Tuple)
      • 核心特点:
      • 示例代码:
    • 三、集合(Set)
      • 核心特点:
      • 示例代码:
    • 四、字典(Dictionary)
      • 核心特点:
      • 示例代码:
    • 五、选择合适的数据结构
      • 六、自定义数据结构

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

        • 动态长度:可随时添加或删除元素。
        • 索引访问:通过 list[index] 访问元素,索引从 0 开始。
        • 支持切片:使用 list[start:stop:step] 获取子列表。
        • 常用方法append()extend()insert()remove()pop()sort()reverse() 等。

        # 创建列表
        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(元素是否存在)

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

        • 不可变性:创建后无法修改,保证数据安全。
        • 索引访问:与列表类似,但不能修改元素。
        • 支持切片:与列表类似,但返回新元组。
        • 常用操作:拼接、计数、查找等。

        # 创建元组
        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() 函数创建。集合主要用于去重和成员检测,支持数学集合运算(如并集、交集、差集)。

        • 无序性:元素没有固定顺序,不能通过索引访问。
        • 唯一性:集合中不允许重复元素。
        • 可变但元素必须可哈希:集合本身可变,但元素必须是不可变类型(如数字、字符串、元组)。
        • 常用操作:并集(|)、交集(&)、差集(-)、对称差集(^)等。

        # 创建集合
        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}

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

        • 键值对存储:每个值对应一个唯一的键。
        • 快速查找:基于哈希表实现,查找效率为 O (1)。
        • 动态调整:可随时添加、修改或删除键值对。
        • 常用方法get()keys()values()items()update() 等。

        # 创建字典
        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')])

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

        • 需要有序且可重复的数据:使用列表(List)。
        • 需要不可变数据:使用元组(Tuple)。
        • 需要去重或集合运算:使用集合(Set)。
        • 需要键值对映射:使用字典(Dictionary)。

        除了内置数据结构,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 数据结构内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

        您可能感兴趣的文章:

        • Python数据结构集合的相关详解
        • Python pyasn库解析和生成ASN.1数据结构
        • 浅谈python数据结构之动态规划
        • 关于Python的高级数据结构与算法
        • 浅谈python中常用的8种经典数据结构
        • Python中DataFrame与内置数据结构相互转换的实现
        • Python数据结构队列解决约瑟夫斯问题
        • Python数据结构栈实现进制转换简单示例
        • python算法与数据结构朋友圈与水杯实验题分析实例

        站内搜索