首页
关于
Search
1
Golang闭包
10 阅读
2
ROS2(二):第一个自定义 Python 节点从编写到运行
9 阅读
3
Golang并发
7 阅读
4
Golang匿名函数
3 阅读
5
Golang Time包入门
2 阅读
默认分类
编程
ROS
登录
Search
tqtqtq
累计撰写
11
篇文章
累计收到
1
条评论
首页
栏目
默认分类
编程
ROS
页面
关于
搜索到
2
篇与
的结果
2026-03-15
Python核心数据结构
Python核心数据结构1. List(列表):灵活的多面手列表是 Python 中最常用的数据结构,就像一个可以随时增删改查的动态数组。特性:有序(按添加顺序排列)、可变(随时可以修改元素)、允许重复。适用场景:需要按顺序存储同类或不同类数据,且后续需要频繁修改数据的场景(如:待办事项列表、爬虫抓取的数据集)。创建与核心操作# 创建列表 my_list = [1, 2, "hello", 3.14, 1] # 增加元素 my_list.append([3, 4]) # 在末尾追加,将列表 [3, 4] 作为单个元素添加,结果为:[1, 2, "hello", 3.14, 1, [3, 4]] my_list.insert(1, "插入") # 在指定索引位置插入 my_list.extend([4, 5]) # 将另一个列表的元素拆散合并进来 # 删除元素 my_list.remove("hello") # 删除第一个匹配的元素 popped_item = my_list.pop() # 移除并返回最后一个元素 # 修改与查询 my_list[0] = 100 # 修改指定索引的值 print(my_list[1]) # 通过索引访问2. Tuple(元组):带锁的列表元组和列表非常相似,但它一旦创建,里面的元素就不能被修改(Immutable)。特性:有序、不可变、允许重复。适用场景:存储不需要更改的数据(如:地理坐标经纬度、数据库查询返回的单条记录)。因为不可变,元组的内存占用比列表小,遍历速度稍快,且可以作为字典的 Key(键)。创建与核心操作# 创建元组 my_tuple = (1, 2, "hello", 1) single_tuple = (1,) # 注意:只有一个元素的元组必须加逗号 # 访问元素 (与列表相同) print(my_tuple[0]) # 输出: 1 # 核心方法 (因为不可变,所以只有查询方法) print(my_tuple.count(1)) # 统计元素 1 出现的次数 (输出: 2) print(my_tuple.index("hello")) # 查找元素的索引位置 """ 如果尝试修改,会抛出TypeError: 't = (1, 2, 3) result = t[0] = 100 # 尝试修改 tuple' object does not support item assignment """ 注意:虽然元组本身不可变,但如果元组里面包含可变对象(如列表),该列表内部的元素是可以修改的。3. Dict(字典):高效的键值对字典就像一本真正的字典,通过唯一的词条(Key)去快速查找对应的释义(Value)。特性:键值对映射、可变、Key 必须唯一且不可变(如字符串、数字、元组)、Value 可以是任意类型。(注:Python 3.7+ 版本后,字典默认保留插入顺序)。适用场景:需要通过特定标识符快速检索数据的场景(如:用户个人信息、配置参数存储、JSON数据处理)。创建与核心操作# 创建字典 my_dict = {"name": "Alice", "age": 25, "city": "New York"} # 增加/修改元素 my_dict["job"] = "Engineer" # 增加新键值对 my_dict["age"] = 26 # 修改已有键的值 # 删除元素 del my_dict["city"] # 删除键值对 age = my_dict.pop("age") # 移除并返回对应的值 # 查询元素 print(my_dict["name"]) # 可能会触发 KeyError 如果键不存在 print(my_dict.get("phone", "Not Found")) # 安全获取,不存在则返回默认值 # 遍历字典 for key, value in my_dict.items(): print(f"{key}: {value}")4. Set(集合):去重与数学运算利器集合就像是一个没有 Value 的字典,它里面只存放独一无二的元素。特性:无序(不支持索引)、可变、元素必须唯一且不可变。适用场景:数据快速去重、测试成员是否属于某个群体、进行数学集合运算(交集、并集、差集)。创建与核心操作# 创建集合 my_set = {1, 2, 3, 3, 4} # 重复的 3 会被自动过滤,结果为 {1, 2, 3, 4} empty_set = set() # 注意:空集合必须用 set(),不能用 {} (那是空字典) # 增删元素 my_set.add(5) # 增加元素 my_set.remove(2) # 移除元素 (如果不存在会报错) my_set.discard(10) # 移除元素 (不存在不会报错) # 集合数学运算 set_a = {1, 2, 3} set_b = {3, 4, 5} print(set_a | set_b) # 并集: {1, 2, 3, 4, 5} (也可用 set_a.union(set_b)) print(set_a & set_b) # 交集: {3} (也可用 set_a.intersection(set_b)) print(set_a - set_b) # 差集: {1, 2} (也可用 set_a.difference(set_b))综合对比总结数据结构符号有序性可变性是否允许重复核心优势 / 用途List (列表)[]有序可变允许灵活存储和操作一连串数据Tuple (元组)()有序不可变允许保护数据不被修改,比列表更省内存Dict (字典){}保持插入顺序可变Key 唯一,Value 允许极其快速的键值查找 (O(1) 复杂度)Set (集合){}无序可变不允许快速去重,强大的集合数学运算
2026年03月15日
1 阅读
0 评论
0 点赞
2026-03-15
Python列表推导式
Python列表推导式1. 基本语法列表推导式的核心语法如下:[expression for item in iterable]expression: 计算结果将被添加到新列表中的表达式。它可以是对 item 的操作,或者仅仅是 item 本身。item: 代表 iterable 中当前遍历到的元素。iterable: 任何可以被遍历的对象(例如列表、字符串、range 对象等)。示例:创建一个包含 0 到 9 平方的列表传统方法 (使用 for 循环):squares = [] for x in range(10): squares.append(x**2) print(squares) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]使用列表推导式:squares = [x**2 for x in range(10)] print(squares) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]2. 添加条件判断 (过滤)你可以在列表推导式中添加 if 语句,以过滤掉不满足条件的元素。[expression for item in iterable if condition]condition: 一个布尔表达式。只有当 condition 为 True 时,对应的 expression 结果才会被添加到新列表中。示例:获取 0 到 19 之间的所有偶数evens = [x for x in range(20) if x % 2 == 0] print(evens) # 输出: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]示例:过滤出长度大于 3 的单词,并转换为大写words = ["apple", "bat", "cat", "banana", "dog"] long_words = [word.upper() for word in words if len(word) > 3] print(long_words) # 输出: ['APPLE', 'BANANA']3. 使用 if-else 结构当你想根据条件改变 expression 的结果,而不是过滤掉元素时,你需要将 if-else 结构放在 for 循环之前。[expression_if_true if condition else expression_if_false for item in iterable]示例:将列表中的正数保持不变,将负数替换为 0numbers = [1, -5, 3, -2, 8] processed_numbers = [x if x > 0 else 0 for x in numbers] print(processed_numbers) # 输出: [1, 0, 3, 0, 8]4. 嵌套循环列表推导式也支持多个 for 循环,这就相当于嵌套的 for 循环。[expression for item1 in iterable1 for item2 in iterable2]示例:生成两个列表元素的笛卡尔积colors = ["red", "blue"] sizes = ["S", "M", "L"] combinations = [(color, size) for color in colors for size in sizes] print(combinations) # 输出: [('red', 'S'), ('red', 'M'), ('red', 'L'), ('blue', 'S'), ('blue', 'M'), ('blue', 'L')]等效的传统代码:combinations = [] for color in colors: for size in sizes: combinations.append((color, size))5. 多维列表的展平可以使用嵌套的列表推导式将一个二维列表(或多维)展平为一个一维列表。示例:展平一个二维矩阵matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] flattened = [num for row in matrix for num in row] print(flattened) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]
2026年03月15日
2 阅读
0 评论
0 点赞