python 列表-元组-集合-字典


1. 列表(List)的定义

  • 列表(List) 是 Python 中一种可变(mutable)、有序的序列容器,可存储任意类型元素(包括不同类型)。
  • 语法:用方括号 [] 包裹元素,元素间用逗号分隔。
    # 定义列表
    list1 = [1, 2, 3]                # 纯数字列表
    list2 = ["a", 10, True, [4, 5]]  # 混合类型列表(支持嵌套)
    list3 = []                       # 空列表
    

2. 列表的使用场景

(1) 动态数据集合
  • 存储需要频繁增删或修改的数据集合。
    user_ids = [1001, 1002, 1003]
    user_ids.append(1004)  # 动态添加元素
    
(2) 批量处理元素
  • 遍历或批量操作元素(如数据清洗、转换)。
    prices = [10.5, 20.0, 15.3]
    discounted = [p * 0.9 for p in prices]  # 所有价格打 9 折
    
(3) 栈或队列的简单实现
  • 用列表模拟栈(后进先出)或队列(先进先出,但性能较低)。
    stack = []
    stack.append(1)          # 入栈 → [1]
    stack.append(2)          # 入栈 → [1, 2]
    top = stack.pop()        # 出栈 → top=2, 栈变为 [1]queue = []
    queue.append("a")        # 入队 → ["a"]
    queue.append("b")        # 入队 → ["a", "b"]
    front = queue.pop(0)     # 出队 → front="a"(但效率低,建议用 deque)
    
(4) 多维数据表示
  • 嵌套列表可表示矩阵、多维数组等。
    matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
    ]
    

3. 列表的注意点

(1) 可变性带来的副作用
  • 列表作为参数传递时,函数内修改会影响原始列表:
    def modify(lst):lst.append(4)nums = [1, 2, 3]
    modify(nums)
    print(nums)  # [1, 2, 3, 4](原列表被修改)
    
(2) 浅拷贝与深拷贝
  • 直接赋值或切片操作是浅拷贝(嵌套对象共享引用):
    a = [1, [2, 3]]
    b = a.copy()       # 浅拷贝
    b[1][0] = 99      # 修改嵌套列表
    print(a)           # [1, [99, 3]](原列表被影响)import copy
    c = copy.deepcopy(a)  # 深拷贝(完全独立)
    
(3) 性能问题
  • 在列表头部或中间插入/删除元素时,时间复杂度为 O(n),效率较低:
    lst = [1, 2, 3, 4]
    lst.insert(0, 0)   # 头部插入 → [0, 1, 2, 3, 4](需移动所有元素)
    
(4) 列表推导式滥用
  • 过于复杂的列表推导式会降低代码可读性:
    # 不推荐:多层嵌套 + 条件判断
    result = [x for x in range(10) if x % 2 == 0 if x > 5]
    # 更清晰的写法:
    result = []
    for x in range(10):if x % 2 == 0 and x > 5:result.append(x)
    

4. 与其他数据类型的区别

特性列表(List)元组(Tuple)集合(Set)字典(Dict)
可变性可变不可变可变可变(键不可变)
有序性有序有序无序有序(Python 3.7+)
唯一性允许重复允许重复元素唯一键唯一
语法[](){}set(){key: value}
典型用途动态数据集合不可变数据保护去重、集合运算键值对映射

5. 列表的高级用法

(1) 列表推导式(List Comprehension)
  • 快速生成列表,支持条件过滤和嵌套循环:
    # 生成 0~9 中偶数的平方
    squares = [x**2 for x in range(10) if x % 2 == 0]  # [0, 4, 16, 36, 64]# 嵌套循环(矩阵展开)
    matrix = [[1, 2], [3, 4]]
    flat = [num for row in matrix for num in row]      # [1, 2, 3, 4]
    
(2) 切片(Slicing)高级操作
  • 灵活截取子列表,支持步长和负数索引:
    lst = [0, 1, 2, 3, 4, 5]
    print(lst[1:4])      # [1, 2, 3](索引 1~3)
    print(lst[::-1])     # [5, 4, 3, 2, 1, 0](逆序)
    print(lst[::2])      # [0, 2, 4](每隔一个元素)
    
(3) 列表作为栈或队列
  • 栈:用 append()pop() 实现(高效)。
  • 队列:用 append()pop(0) 实现(低效),建议改用 collections.deque
    from collections import deque
    queue = deque(["a", "b"])
    queue.append("c")     # 入队 → deque(["a", "b", "c"])
    front = queue.popleft()  # 出队 → "a"(高效)
    
(4) 列表合并与扩展
  • 合并列表的多种方式:
    a = [1, 2]
    b = [3, 4]
    c = a + b          # 新列表 → [1, 2, 3, 4]
    a.extend(b)        # 原地扩展 → a 变为 [1, 2, 3, 4]
    
(5) 排序与自定义排序
  • 内置排序方法:
    nums = [3, 1, 4, 2]
    nums.sort()                          # 原地排序 → [1, 2, 3, 4]
    sorted_nums = sorted(nums, reverse=True)  # 降序 → [4, 3, 2, 1]# 自定义排序(按字符串长度)
    words = ["apple", "kiwi", "banana"]
    words.sort(key=lambda x: len(x))     # ["kiwi", "apple", "banana"]
    
(6) 生成器表达式与内存优化
  • 生成器表达式节省内存(适合处理大数据):
    # 列表推导式(直接生成列表,占用内存)
    squares_list = [x**2 for x in range(1000000)]  # 内存占用高# 生成器表达式(惰性计算)
    squares_gen = (x**2 for x in range(1000000))   # 内存占用低
    

6. 总结

  • 核心优势:动态修改、有序存储、灵活的操作方法。
  • 适用场景:动态数据集合、批量处理、多维数据表示、临时栈/队列。
  • 避免误区
    • 不要依赖列表的顺序性进行高频率的头部操作(用 deque)。
    • 注意浅拷贝的副作用,必要时使用 deepcopy
  • 高级技巧
    • 利用切片和推导式简化代码。
    • 结合排序和自定义逻辑处理复杂数据。
    • 使用生成器表达式优化内存。

列表是 Python 中最常用的数据结构,掌握其特性可显著提升编码效率!—

1. 元组的定义

  • 元组(Tuple) 是 Python 中一种不可变(immutable)、有序的序列容器。
  • 语法:用逗号分隔元素,通常用圆括号 () 包裹(括号可省略,但逗号必须有)。
    # 定义元组
    t1 = (1, 2, 3)       # 标准写法
    t2 = 4, 5, 6         # 括号可省略
    t3 = (7,)            # 单元素元组必须加逗号,否则会被识别为普通变量
    t4 = ()              # 空元组
    

2. 元组的使用场景

(1) 数据不可变性需求
  • 当需要确保数据不被意外修改时(如配置参数、常量集合)。
    RGB_COLORS = ("RED", "GREEN", "BLUE")  # 颜色常量
    
(2) 作为字典的键
  • 元组的不可变性使其可以作为字典的键,而列表或其他可变类型不行。
    location_map = {(40.7128, -74.0060): "New York",(51.5074, -0.1278): "London"
    }
    
(3) 函数多返回值
  • 函数返回多个值时,Python 默认将其打包为元组。
    def get_user_info():name = "Alice"age = 30return name, age  # 返回元组 ("Alice", 30)user = get_user_info()
    
(4) 性能优化
  • 元组的内存占用比列表更小,适用于存储大量静态数据。
    import sys
    print(sys.getsizeof((1, 2, 3)))  # 72 bytes(Python 3.11)
    print(sys.getsizeof([1, 2, 3]))  # 88 bytes
    

3. 元组的注意点

(1) 不可变性
  • 元组一旦创建,元素不可增删改:
    t = (1, 2, 3)
    t[0] = 10  # 报错:TypeError: 'tuple' object does not support item assignment
    
(2) 包含可变对象时的陷阱
  • 如果元组元素是可变对象(如列表),这些对象的内容仍可修改:
    t = (1, [2, 3], 4)
    t[1].append(5)  # 合法操作 → t 变为 (1, [2, 3, 5], 4)
    
(3) 单元素元组的定义
  • 单元素元组必须加逗号,否则会被识别为普通变量:
    not_a_tuple = (10)     # 类型是 int
    a_tuple = (10,)        # 类型是 tuple
    

4. 与其他数据类型的区别

特性元组(Tuple)列表(List)集合(Set)字典(Dict)
可变性不可变可变可变可变(键不可变)
有序性有序有序无序有序(Python 3.7+)
语法()[]{}set(){key: value}
元素唯一性允许重复允许重复元素唯一键唯一
典型用途数据保护、字典键、返回值动态数据集合去重、集合运算键值对映射

5. 元组的高级用法

(1) 元组解包(Unpacking)
  • 快速将元组元素赋值给变量:
    coordinates = (10, 20)
    x, y = coordinates  # x=10, y=20
    
(2) 扩展解包(Extended Unpacking)
  • 使用 * 捕获多个元素:
    t = (1, 2, 3, 4, 5)
    first, *middle, last = t  # first=1, middle=[2,3,4], last=5
    
(3) 命名元组(Named Tuple)
  • 使用 collections.namedtuple 创建具有字段名的元组:
    from collections import namedtuple
    Point = namedtuple("Point", ["x", "y"])
    p = Point(10, y=20)
    print(p.x, p.y)  # 输出 10 20(可通过字段名访问)
    
(4) 元组与函数参数
  • 使用 * 将元组解包为函数参数:
    def add(a, b):return a + bargs = (3, 5)
    print(add(*args))  # 输出 8
    
(5) 元组生成式
  • 生成器表达式生成元组:
    t = tuple(i * 2 for i in range(5))  # (0, 2, 4, 6, 8)
    

6. 总结

  • 元组的核心优势:不可变性、内存高效性、可哈希性(作为字典键)。
  • 适用场景:保护数据安全、字典键、函数多返回值、性能敏感场景。
  • 避免误区:不要误以为元组完全不可变(当元素为可变对象时)。
  • 高级技巧:结合解包、命名元组、生成器表达式等提升代码可读性和效率。

元组是 Python 中简洁高效的工具,合理使用能提升代码的健壮性和性能。


1. 集合(Set)的定义

  • 集合(Set) 是 Python 中一种无序元素唯一的容器,支持数学中的集合运算(如并集、交集、差集等)。
  • 语法:用大括号 {} 包裹元素(空集合必须用 set() 创建),元素间用逗号分隔。
    # 定义集合
    s1 = {1, 2, 3}          # 非空集合
    s2 = set()              # 空集合(不能用 {},否则是空字典)
    s3 = {2, 2, 3, "a"}     # 重复元素自动去重 → {2, 3, "a"}
    

2. 集合的使用场景

(1) 数据去重
  • 快速去除列表、元组等序列中的重复元素。
    nums = [1, 2, 2, 3, 3, 3]
    unique_nums = list(set(nums))  # 去重 → [1, 2, 3]
    
(2) 成员关系测试
  • 集合的哈希表结构使得 in 操作的时间复杂度为 O(1),远快于列表的 O(n)。
    valid_users = {"Alice", "Bob", "Charlie"}
    if "Alice" in valid_users:  # 高效判断print("Valid user")
    
(3) 集合运算
  • 支持并集(|)、交集(&)、差集(-)、对称差集(^)等数学运算。
    a = {1, 2, 3}
    b = {2, 3, 4}
    print(a | b)  # 并集 → {1, 2, 3, 4}
    print(a & b)  # 交集 → {2, 3}
    print(a - b)  # 差集(在 a 但不在 b) → {1}
    print(a ^ b)  # 对称差集 → {1, 4}
    
(4) 过滤数据
  • 结合集合运算筛选符合条件的元素。
    all_products = {"A", "B", "C", "D"}
    available_products = {"B", "C", "E"}
    out_of_stock = all_products - available_products  # {"A", "D"}
    

3. 集合的注意点

(1) 元素必须是可哈希(Hashable)类型
  • 集合元素只能是不可变类型(如整数、字符串、元组),不能是列表、字典等可变类型。
    valid_set = {1, "a", (2, 3)}    # 合法
    invalid_set = { [1, 2] }        # 报错:TypeError(列表不可哈希)
    
(2) 无序性
  • 集合元素没有固定顺序,无法通过索引访问:
    s = {3, 1, 2}
    print(s)          # 可能输出 {1, 2, 3}(顺序不确定)
    # print(s[0])     # 报错:'set' object is not subscriptable
    
(3) 动态修改
  • 集合是可变类型,可以增删元素:
    s = {1, 2}
    s.add(3)          # 添加元素 → {1, 2, 3}
    s.remove(2)       # 删除元素 → {1, 3}
    s.discard(5)      # 删除不存在的元素不会报错
    

4. 与其他数据类型的区别

特性集合(Set)列表(List)元组(Tuple)字典(Dict)
有序性无序有序有序有序(Python 3.7+)
唯一性元素唯一允许重复允许重复键唯一
可变性可变可变不可变可变(键不可变)
语法{}set()[](){key: value}
典型用途去重、集合运算、快速查找动态数据序列不可变数据序列键值对映射

5. 集合的高级用法

(1) 集合推导式
  • 类似列表推导式,生成集合:
    s = {x**2 for x in range(5)}  # {0, 1, 4, 9, 16}
    
(2) 不可变集合(frozenset)
  • 使用 frozenset 创建不可变集合,可作为字典的键或另一个集合的元素:
    fs = frozenset([1, 2, 3])
    d = {fs: "value"}  # 合法
    
(3) 批量更新操作
  • 使用 update()intersection_update() 等方法批量修改集合:
    s = {1, 2}
    s.update([3, 4])    # 添加多个元素 → {1, 2, 3, 4}
    s.intersection_update({2, 3})  # 保留交集 → {2}
    
(4) 集合运算方法
  • 使用内置方法替代运算符,支持更灵活的参数(如可迭代对象):
    a = {1, 2}
    b = [2, 3]
    print(a.union(b))      # {1, 2, 3}(参数可以是任意可迭代对象)
    
(5) 判断子集/超集
  • 检查集合间的包含关系:
    a = {1, 2}
    b = {1, 2, 3}
    print(a.issubset(b))    # True(a 是 b 的子集)
    print(b.issuperset(a))  # True(b 是 a 的超集)
    

6. 总结

  • 核心优势:元素唯一性、高效成员检测、集合运算。
  • 适用场景:数据去重、关系测试、数学集合操作。
  • 避免误区
    • 不要用集合存储重复数据或需要顺序的数据。
    • 确保集合元素是不可变类型。
  • 高级技巧
    • 利用 frozenset 实现不可变集合。
    • 使用集合推导式简化代码。
    • 结合运算符和方法灵活处理集合关系。

集合是处理唯一性数据和高效集合运算的利器,合理使用可大幅简化逻辑并提升性能。


1. 字典(Dictionary)的定义

  • 字典(Dict) 是 Python 中一种键值对(Key-Value)形式的无序(Python 3.7+ 后有序)、可变容器。
  • 语法:用大括号 {} 包裹键值对,键值间用冒号 : 分隔,键值对间用逗号 , 分隔。
    # 定义字典
    d1 = {"name": "Alice", "age": 25}          # 标准写法
    d2 = dict(name="Bob", age=30)             # 使用 dict() 构造函数
    d3 = {}                                   # 空字典
    

2. 字典的使用场景

(1) 高效键值映射
  • 通过键快速查找、插入或更新值(时间复杂度 O(1))。
    user_info = {"id": 1001, "role": "admin"}
    print(user_info["role"])  # 输出 "admin"
    
(2) 动态配置管理
  • 存储程序配置参数或动态生成的数据结构。
    config = {"debug_mode": True,"max_connections": 100,"allowed_ips": ["192.168.1.1", "10.0.0.1"]
    }
    
(3) 数据聚合与统计
  • 统计元素出现次数或分组数据。
    words = ["apple", "banana", "apple", "orange"]
    count = {}
    for word in words:count[word] = count.get(word, 0) + 1  # {"apple": 2, "banana": 1, "orange": 1}
    
(4) JSON 数据交互
  • 与 JSON 格式数据无缝转换(通过 json 模块)。
    import json
    data = '{"name": "Alice", "age": 25}'
    dict_data = json.loads(data)  # 转为字典
    

3. 字典的注意点

(1) 键必须可哈希(Hashable)
  • 字典的键必须是不可变类型(如整数、字符串、元组),不能是列表、字典等可变类型。
    valid_key = ("ip", "port")    # 元组作为键(合法)
    invalid_key = ["ip", "port"]  # 列表作为键(报错)
    
(2) 键的唯一性
  • 同一字典中键不可重复,重复键会覆盖旧值:
    d = {"a": 1, "a": 2}
    print(d)  # 输出 {"a": 2}
    
(3) 无序性(Python 3.7 之前)
  • Python 3.7+ 后字典会保留插入顺序,但依赖顺序的逻辑需谨慎(建议用 collections.OrderedDict)。
(4) 访问不存在的键会报错
  • 直接访问不存在的键会触发 KeyError,建议用 get() 方法或 in 检查:
    d = {"a": 1}
    print(d.get("b", 0))  # 输出 0(默认值)
    if "b" in d:          # 安全检查print(d["b"])
    

4. 与其他数据类型的区别

特性字典(Dict)列表(List)集合(Set)元组(Tuple)
存储形式键值对(Key-Value)有序元素序列无序唯一元素集合不可变元素序列
访问方式通过键访问(d[key]通过索引(list[0]无法直接索引访问通过索引(tuple[0]
可变性可变可变可变不可变
典型用途映射关系、配置管理动态数据集合去重、集合运算不可变数据保护

5. 字典的高级用法

(1) 字典推导式
  • 快速生成字典:
    squares = {x: x**2 for x in range(5)}  # {0:0, 1:1, 2:4, 3:9, 4:16}
    
(2) 合并字典
  • Python 3.5+ 使用 **| 运算符(Python 3.9+):
    d1 = {"a": 1}
    d2 = {"b": 2}
    merged = {**d1, **d2}          # {"a":1, "b":2}(Python 3.5+)
    merged = d1 | d2               # Python 3.9+
    
(3) 处理缺失键
  • 使用 defaultdict 自动处理缺失键:
    from collections import defaultdict
    dd = defaultdict(int)          # 缺失键默认值为 0
    dd["count"] += 1               # 自动创建 "count":1
    
(4) 字典视图
  • 通过 keys(), values(), items() 获取动态视图:
    d = {"a": 1, "b": 2}
    keys_view = d.keys()           # 键视图(动态反映字典变化)
    d["c"] = 3
    print(list(keys_view))         # ["a", "b", "c"]
    
(5) 嵌套字典
  • 字典值可以是其他容器(如字典、列表):
    employees = {"Alice": {"age": 30, "role": "Engineer"},"Bob": {"age": 25, "role": "Designer"}
    }
    print(employees["Alice"]["role"])  # "Engineer"
    
(6) 有序字典(OrderedDict)
  • 保留键的插入顺序(Python 3.7+ 普通字典已有序,但 OrderedDict 支持额外操作):
    from collections import OrderedDict
    od = OrderedDict()
    od["a"] = 1
    od["b"] = 2
    od.move_to_end("a")            # 将 "a" 移动到最后
    
(7) 字典解包
  • 解包字典为函数参数:
    def connect(host, port):print(f"Connecting to {host}:{port}")params = {"host": "localhost", "port": 8080}
    connect(**params)  # 输出 "Connecting to localhost:8080"
    

6. 总结

  • 核心优势:高效的键值映射、灵活的动态修改、与 JSON 的天然兼容。
  • 适用场景:数据聚合、配置管理、JSON 交互、动态结构化数据存储。
  • 避免误区
    • 不要用可变对象作为键。
    • 访问不存在的键时使用 get()in 检查。
    • 注意 Python 版本对字典有序性的影响。
  • 高级技巧
    • 利用推导式和 defaultdict 简化代码。
    • 结合视图操作和嵌套结构处理复杂数据。
    • 使用 OrderedDict 或 Python 3.7+ 的字典保留顺序。

字典是 Python 中最强大的数据结构之一,熟练掌握其特性可显著提升代码效率和可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43348.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

坚持“大客户战略”,昂瑞微深耕全球射频市场

北京昂瑞微电子技术股份有限公司(简称“昂瑞微”)是一家聚焦射频与模拟芯片设计的高新技术企业。随着5G时代的全面到来,智能手机、智能汽车等终端设备对射频前端器件在通信频率、多频段支持、信道带宽及载波聚合等方面提出了更高需求&#xf…

AI赋能职教革新:生成式人工智能(GAI)认证重构技能人才培养新范式

在数字化浪潮的推动下,职业教育正经历着前所未有的变革。面对快速变化的市场需求和技术发展,如何培养具备高技能、高素质的人才成为了职业教育的重要课题。而在这个过程中,人工智能(AI)技术的融入,无疑为职…

Python:日志管理器配置

日志模块组件: 日志器logger:提供应用程序调用的接口 处理器handler:将日志发送到指定的位置 过滤器filter:过滤日志信息 格式器formatter:格式化输出日志 如何配置日志管理器: #导入模块 import log…

城电科技|零碳园区光伏太阳花绽放零碳绿色未来

近日,珠海城电科技自主研发生产的三轴跟踪光伏太阳花在长沙某智慧零碳园区完成安装调试,正式投入运营。作为集“科技能源艺术”于一体的新能源太阳能光伏发电设备,这一创新艺术光伏景观不仅为园区注入绿色动能,更凭借独特的科技美…

c++ - 右击一个cpp文件,但是编译菜单项是灰的

文章目录 c - 右击一个cpp文件,但是编译菜单项是灰的概述END c - 右击一个cpp文件,但是编译菜单项是灰的 概述 VS2019, 整理工程,在编译,工程报错,说有个函数的实现没找到。 有实现part_opt.cpp,头文件也…

29_项目

目录 http.js 1、先注册账号 register.html 2、再登录 login.html 3、首页 index.html 4 详情 details.html cart.html css index.css register.css details.css 演示 进阶 http.js let baseURL "http://localhost:8888"; let resgiterApi baseURL &…

vmware 创建win10 系统,虚拟机NAT网络设置

虚拟机设置: 物理机本机创建桥接: 如何创建桥接,请自行脑补~

API 请求需要证书认证? 如何在 Postman 中正确配置和使用?

本文来介绍 Postman 提供的管理证书功能如何配置,要了解更多相关的知识,可访问 Postman 证书 模块。 管理客户端证书,点击对应的按钮,首先选择 SETTINGS ,然后选择 Certificate 选项卡,如图所示&#xff1…

强大的AI网站推荐(第四集)—— Gamma

网站:Gamma 号称:展示创意的新媒介 博主评价:快速展示创意,重点是展示,在几秒钟内快速生成幻灯片、网站、文档等内容 推荐指数:🌟🌟🌟🌟🌟&#x…

信息学奥赛一本通 1609:【例 4】Cats Transport | 洛谷 CF311B Cats Transport

【题目链接】 ybt 1609:【例 4】Cats Transport 洛谷 CF311B Cats Transport 【题目考点】 1. 动态规划:斜率优化动规 【解题思路】 解法1:设a点的前缀和 输入的 d d d序列是从 d 2 d_2 d2​到 d n d_n dn​,共n-1个数字。人…

从24GHz到71GHz:Sivers半导体的广泛频率范围5G毫米波产品解析

在5G技术的浪潮中,Sivers半导体推出了创新的毫米波无线产品,为通信行业带来高效、可靠的解决方案。这些产品支持从24GHz到71GHz的频率,覆盖许可与非许可频段,适应高速、低延迟的通信场景。 5G通信频段的一点事儿及Sivers毫米波射频…

LocalDateTime序列化总结

版权说明: 本文由CSDN博主keep丶原创,转载请保留此块内容在文首。 原文地址: https://blog.csdn.net/qq_38688267/article/details/146703276 文章目录 1.背景2.序列化介绍常见场景关键问题 3.总体方案4.各场景实现方式WEB接口EasyExcelMybat…

分享一个Pyside6实现web数据展示界面的效果图

今天又是有问题直接找DS的一天,每日一问,今天我的问题是“怎么将pyside6生成的界面转成web界面,使用python语言实现web界面”,等了一会,DS给我提供了两种方案,方案如下: 然后,让我们…

GAMMA数据处理(十)

今天向别人请教了一个问题,刚无意中搜索到了一模一样的问题 不知道这个怎么解决... ok 解决了 有一个GAMMA的命令可转换 但是很奇怪 完全对不上 转换出来的行列号 不知道为啥 再试试 是因为经纬度坐标的小数点位数 de as

[从零开始学习JAVA ] 深入多线程

前言: 当今软件开发领域中,多线程编程已成为一项至关重要的技能。然而,要编写出高效、可靠的多线程程序并不容易。多线程编程面临着许多挑战,如线程安全性、资源共享、死锁等问题。因此,对于初学者来说,深入…

【Python NetworkX】图结构 图绘制

【Python NetworkX】图结构 & 图绘制 1. 简介 & 安装1.1 简介1.2 安装1.3 导入 2. 图2.1 无向图2.2 有向图2.3 重边无向图2.4 重边有向图2.5 图属性 3. 节点3.1 添加节点3.2 移除节点3.3 节点属性3.4 检查节点状态 4. 边4.1 添加边4.2 移除边4.3 边属性4.4 检查边状态 …

Kubernetes》k8s》Containerd 、ctr 、cri、crictl

containerd ctr crictl ctr 是 containerd 的一个客户端工具。 crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。 ctr -v 输出的是 containerd 的版本, crictl -v 输出的是当前 k8s 的版本&#x…

【湖北工业大学2025年ACM校赛(同步赛)】题解

比赛链接 A. 蚂蚁上树 题目大意 给定一棵 n n n 个结点的树,根结点为 1 1 1。每个 叶结点 都有一只蚂蚁,每过 1 1 1 秒钟,你可以选一些蚂蚁往其 父结点 走一步,但是要求任意两只蚂蚁都不能在同一个 非根结点 上。 问至少要…

CS2 DEMO导入blender(慢慢更新咯)

流程:cs2-sourcefilmmaker-blender 工具:cs2tools,cs2manager,blender,blender插件sourceio,source2viewer 导入sfm 工具界面 选择这个 sourceio插件 sourceIO其中新版本导入相机路径不见了&#xff0c…

一周学会Flask3 Python Web开发-SQLAlchemy数据迁移migrate

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 模型类(表)不是一成不变的,当你添加了新的模型类,或是在模型类中添加了新的字段,甚至是修改…