news 2026/7/19 3:46:46

Python中列表的操作(超详细版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python中列表的操作(超详细版)

Python中列表的操作(超详细版)

前言

列表(List)是Python中最核心、最常用的数据结构之一。它就像一个"万能容器",可以存放任意类型的数据,并且支持增删改查等各种操作。无论是数据处理、算法实现,还是项目开发,列表都是你离不开的工具。

本文将系统讲解Python列表的6大核心知识点,从基础定义到高级操作,一篇文章带你彻底掌握列表!


一、列表的定义

列表是由一系列按特定顺序排列的元素组成的集合,用方括号[]表示,元素之间用逗号隔开。

1.1 基本定义方式

python

# 空列表 empty_list = [] print(empty_list) # [] # 存放同类型数据 numbers = [1, 2, 3, 4, 5] fruits = ['苹果', '香蕉', '橘子'] print(fruits) # ['苹果', '香蕉', '橘子'] # 存放不同类型数据(Python列表支持) mixed = [1, 'hello', 3.14, True, None] print(mixed) # [1, 'hello', 3.14, True, None] # 嵌套列表(二维列表) matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(matrix) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

1.2 使用 list() 构造函数

python

# 从字符串转列表 s = "hello" print(list(s)) # ['h', 'e', 'l', 'l', 'o'] # 从元组转列表 t = (1, 2, 3) print(list(t)) # [1, 2, 3] # 从 range 生成列表 print(list(range(5))) # [0, 1, 2, 3, 4] print(list(range(1, 10, 2))) # [1, 3, 5, 7, 9] # 创建指定长度的列表 zeros = [0] * 5 print(zeros) # [0, 0, 0, 0, 0]

1.3 列表推导式(高级定义)

python

# 生成1-10的平方列表 squares = [x**2 for x in range(1, 11)] print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] # 带条件的列表推导式(只取偶数) evens = [x for x in range(1, 21) if x % 2 == 0] print(evens) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] # 嵌套循环的列表推导式 pairs = [(x, y) for x in [1, 2] for y in ['a', 'b']] print(pairs) # [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]

二、列表的索引

列表中的每个元素都有对应的位置编号,从0开始正向编号,或从-1开始反向编号。

2.1 正向索引(从0开始)

python

fruits = ['苹果', '香蕉', '橘子', '西瓜', '葡萄'] # 索引: 0 1 2 3 4 print(fruits[0]) # 苹果 print(fruits[1]) # 香蕉 print(fruits[3]) # 西瓜 print(fruits[4]) # 葡萄 # 获取列表长度 print(len(fruits)) # 5 print(fruits[len(fruits) - 1]) # 葡萄(最后一个元素)

2.2 反向索引(从-1开始)

python

fruits = ['苹果', '香蕉', '橘子', '西瓜', '葡萄'] # 索引: -5 -4 -3 -2 -1 print(fruits[-1]) # 葡萄(最后一个) print(fruits[-2]) # 西瓜 print(fruits[-3]) # 橘子

2.3 索引使用注意事项

python

fruits = ['苹果', '香蕉', '橘子'] # ✅ 正确索引 print(fruits[0]) # 苹果 print(fruits[2]) # 橘子 # ❌ 索引越界错误 # print(fruits[3]) # IndexError: list index out of range # ❌ 负索引不能小于 -len(list) # print(fruits[-4]) # IndexError

三、列表的切片

切片可以从列表中截取一部分,创建新列表,语法为list[start:end:step]

3.1 基本切片语法

python

fruits = ['苹果', '香蕉', '橘子', '西瓜', '葡萄', '草莓', '芒果'] # 语法:list[起始:结束:步长] # 包含起始位置,不包含结束位置 print(fruits[0:3]) # ['苹果', '香蕉', '橘子'](索引0-2) print(fruits[2:5]) # ['橘子', '西瓜', '葡萄'](索引2-4) print(fruits[:3]) # ['苹果', '香蕉', '橘子'](省略起始,从0开始) print(fruits[3:]) # ['西瓜', '葡萄', '草莓', '芒果'](省略结束,到末尾) print(fruits[:]) # 全部元素(复制整个列表)

3.2 步长(Step)

python

fruits = ['苹果', '香蕉', '橘子', '西瓜', '葡萄', '草莓', '芒果'] # 每隔一个取一个 print(fruits[::2]) # ['苹果', '橘子', '葡萄', '芒果'] # 从索引1开始,每隔一个取一个 print(fruits[1::2]) # ['香蕉', '西瓜', '草莓'] # 反转列表(最常用) print(fruits[::-1]) # ['芒果', '草莓', '葡萄', '西瓜', '橘子', '香蕉', '苹果']

3.3 切片的高级用法

python

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 取前3个 print(numbers[:3]) # [0, 1, 2] # 取后3个 print(numbers[-3:]) # [7, 8, 9] # 取除了前3个的所有 print(numbers[3:]) # [3, 4, 5, 6, 7, 8, 9] # 取除了后3个的所有 print(numbers[:-3]) # [0, 1, 2, 3, 4, 5, 6] # 取中间部分 print(numbers[2:7]) # [2, 3, 4, 5, 6] # 取奇数索引的元素 print(numbers[1::2]) # [1, 3, 5, 7, 9] # 取偶数索引的元素 print(numbers[::2]) # [0, 2, 4, 6, 8] # 复制列表(两种方式) new_list1 = numbers[:] # 方式1 new_list2 = numbers.copy() # 方式2 print(new_list1 == new_list2) # True

3.4 切片 vs 直接赋值(重要)

python

# 直接赋值:两个变量指向同一个列表 a = [1, 2, 3] b = a b.append(4) print(a) # [1, 2, 3, 4](a也被修改了) # 切片复制:创建新列表 a = [1, 2, 3] b = a[:] b.append(4) print(a) # [1, 2, 3](a不受影响) print(b) # [1, 2, 3, 4]

3.5 切片赋值(替换部分元素)

python

# 使用切片替换部分元素 numbers = [1, 2, 3, 4, 5, 6] numbers[1:4] = [10, 20, 30] print(numbers) # [1, 10, 20, 30, 5, 6] # 切片替换的元素个数可以不同 numbers = [1, 2, 3, 4, 5] numbers[1:3] = [10, 20, 30, 40] print(numbers) # [1, 10, 20, 30, 40, 4, 5] # 删除切片(赋值为空列表) numbers = [1, 2, 3, 4, 5] numbers[1:4] = [] print(numbers) # [1, 5]

四、列表的遍历

遍历列表即逐个访问列表中的每个元素。

4.1 for 循环直接遍历(最常用)

python

fruits = ['苹果', '香蕉', '橘子', '西瓜'] for fruit in fruits: print(fruit) # 输出: # 苹果 # 香蕉 # 橘子 # 西瓜 # 遍历时修改元素(需要索引) numbers = [1, 2, 3, 4, 5] for i, num in enumerate(numbers): numbers[i] = num * 2 print(numbers) # [2, 4, 6, 8, 10]

4.2 通过索引遍历(使用 range)

python

fruits = ['苹果', '香蕉', '橘子', '西瓜'] for i in range(len(fruits)): print(f"索引{i}:{fruits[i]}") # 输出: # 索引0:苹果 # 索引1:香蕉 # 索引2:橘子 # 索引3:西瓜

4.3 同时获取索引和元素(enumerate)

python

fruits = ['苹果', '香蕉', '橘子', '西瓜'] # 默认索引从0开始 for i, fruit in enumerate(fruits): print(f"{i}: {fruit}") # 0: 苹果 # 1: 香蕉 # 2: 橘子 # 3: 西瓜 # 指定起始索引 for i, fruit in enumerate(fruits, start=1): print(f"{i}: {fruit}") # 1: 苹果 # 2: 香蕉 # 3: 橘子 # 4: 西瓜

4.4 while 循环遍历

python

fruits = ['苹果', '香蕉', '橘子', '西瓜'] i = 0 while i < len(fruits): print(fruits[i]) i += 1 # 依次输出:苹果、香蕉、橘子、西瓜

4.5 遍历嵌套列表

python

matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] # 遍历二维列表 for row in matrix: for col in row: print(col, end=' ') print() # 输出: # 1 2 3 # 4 5 6 # 7 8 9 # 使用索引遍历 for i in range(len(matrix)): for j in range(len(matrix[i])): print(f"matrix[{i}][{j}] = {matrix[i][j]}")

4.6 遍历的经典场景

python

# 1. 找出所有符合条件的元素 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = [] for num in numbers: if num % 2 == 0: even_numbers.append(num) print(even_numbers) # [2, 4, 6, 8, 10] # 2. 计算总和 numbers = [10, 20, 30, 40, 50] total = 0 for num in numbers: total += num print(total) # 150 # 3. 查找最大值 numbers = [23, 45, 12, 67, 34, 89] max_num = numbers[0] for num in numbers: if num > max_num: max_num = num print(max_num) # 89 # 4. 列表去重 numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] unique = [] for num in numbers: if num not in unique: unique.append(num) print(unique) # [1, 2, 3, 4]

五、列表的常用方法(超全汇总)

5.1 增加元素

方法说明示例
append(x)在末尾添加一个元素[1,2].append(3)[1,2,3]
insert(i, x)在指定位置插入元素[1,2].insert(1,3)[1,3,2]
extend(iterable)在末尾添加多个元素[1,2].extend([3,4])[1,2,3,4]
+拼接两个列表[1,2] + [3,4][1,2,3,4]
*重复列表[1,2] * 3[1,2,1,2,1,2]

python

# append - 追加单个元素 fruits = ['苹果', '香蕉'] fruits.append('橘子') print(fruits) # ['苹果', '香蕉', '橘子'] # insert - 在指定位置插入 fruits.insert(1, '西瓜') print(fruits) # ['苹果', '西瓜', '香蕉', '橘子'] # extend - 追加多个元素 fruits.extend(['草莓', '芒果']) print(fruits) # ['苹果', '西瓜', '香蕉', '橘子', '草莓', '芒果'] # + 拼接(创建新列表) list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = list1 + list2 print(list3) # [1, 2, 3, 4, 5, 6] # * 重复 print([1, 2, 3] * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]

5.2 删除元素

方法说明示例
remove(x)删除第一个匹配的元素[1,2,2].remove(2)[1,2]
pop(i)删除指定位置元素并返回[1,2,3].pop(1)2
pop()删除最后一个元素并返回[1,2,3].pop()3
clear()清空列表[1,2].clear()[]
del删除元素或列表del list[0]del list
切片赋值删除切片[1,2,3][1:2] = [][1,3]

python

# remove - 删除第一个匹配的元素 numbers = [1, 2, 3, 2, 4, 2] numbers.remove(2) print(numbers) # [1, 3, 2, 4, 2](只删除第一个) # numbers.remove(5) # ValueError: 5 not in list # pop - 删除并返回元素 fruits = ['苹果', '香蕉', '橘子', '西瓜'] last = fruits.pop() print(last) # 西瓜 print(fruits) # ['苹果', '香蕉', '橘子'] second = fruits.pop(1) # 删除索引1的元素 print(second) # 香蕉 print(fruits) # ['苹果', '橘子'] # clear - 清空列表 fruits.clear() print(fruits) # [] # del - 删除元素或列表 fruits = ['苹果', '香蕉', '橘子', '西瓜'] del fruits[1] # 删除索引1的元素 print(fruits) # ['苹果', '橘子', '西瓜'] del fruits[1:3] # 删除切片 print(fruits) # ['苹果'] # del fruits # 删除整个列表 # print(fruits) # NameError # 删除所有匹配的元素(循环删除) numbers = [2, 1, 2, 3, 2, 4, 2] while 2 in numbers: numbers.remove(2) print(numbers) # [1, 3, 4]

5.3 查找与统计

方法说明示例
index(x)查找元素索引,不存在报错[1,2,3].index(2)1
count(x)统计元素出现次数[1,2,2].count(2)2
in判断是否包含2 in [1,2,3]True
not in判断是否不包含4 not in [1,2,3]True

python

fruits = ['苹果', '香蕉', '橘子', '香蕉', '西瓜'] # index - 查找第一个匹配的索引 print(fruits.index('香蕉')) # 1 print(fruits.index('香蕉', 2)) # 3(从索引2开始找) # count - 统计出现次数 print(fruits.count('香蕉')) # 2 print(fruits.count('草莓')) # 0 # in / not in print('苹果' in fruits) # True print('草莓' in fruits) # False print('芒果' not in fruits) # True

5.4 排序与反转

方法说明示例
sort()升序排序(改变原列表)[3,1,2].sort()[1,2,3]
sort(reverse=True)降序排序(改变原列表)[3,1,2].sort(reverse=True)[3,2,1]
reverse()反转列表(改变原列表)[1,2,3].reverse()[3,2,1]
sorted()返回排序后的新列表sorted([3,1,2])[1,2,3]
reversed()返回反转的迭代器list(reversed([1,2,3]))[3,2,1]

python

# sort - 永久排序(修改原列表) numbers = [3, 1, 4, 1, 5, 9, 2] numbers.sort() print(numbers) # [1, 1, 2, 3, 4, 5, 9] # sort(reverse=True) - 降序 numbers.sort(reverse=True) print(numbers) # [9, 5, 4, 3, 2, 1, 1] # 自定义排序(根据字符串长度) words = ['Python', 'Java', 'C', 'JavaScript'] words.sort(key=len) print(words) # ['C', 'Java', 'Python', 'JavaScript'] # sorted - 临时排序(返回新列表,原列表不变) numbers = [3, 1, 4, 1, 5, 9, 2] sorted_numbers = sorted(numbers) print(sorted_numbers) # [1, 1, 2, 3, 4, 5, 9] print(numbers) # [3, 1, 4, 1, 5, 9, 2](原列表不变) # sorted(reverse=True) - 临时降序 print(sorted(numbers, reverse=True)) # [9, 5, 4, 3, 2, 1, 1] # reverse - 反转列表 fruits = ['苹果', '香蕉', '橘子'] fruits.reverse() print(fruits) # ['橘子', '香蕉', '苹果'] # 使用切片反转(创建新列表) fruits = ['苹果', '香蕉', '橘子'] reversed_fruits = fruits[::-1] print(reversed_fruits) # ['橘子', '香蕉', '苹果'] print(fruits) # ['苹果', '香蕉', '橘子']

5.5 复制列表

方法说明示例
copy()浅拷贝[1,2].copy()[1,2]
list()浅拷贝list([1,2])[1,2]
[:]浅拷贝[1,2][:][1,2]
copy.deepcopy()深拷贝(需导入copy模块)复制嵌套列表

python

# 浅拷贝 - 创建新列表,但嵌套元素仍共享 original = [1, 2, [3, 4]] copy1 = original.copy() copy2 = original[:] copy3 = list(original) print(copy1) # [1, 2, [3, 4]] print(copy2) # [1, 2, [3, 4]] print(copy3) # [1, 2, [3, 4]] # 浅拷贝的问题:嵌套列表仍指向同一对象 original[2][0] = 99 print(copy1) # [1, 2, [99, 4]](copy1也被修改了) # 深拷贝 - 完全独立复制 import copy original = [1, 2, [3, 4]] deep_copy = copy.deepcopy(original) original[2][0] = 99 print(deep_copy) # [1, 2, [3, 4]](不受影响)

5.6 其他内置函数

函数说明示例
len()获取长度len([1,2,3])3
max()获取最大值max([1,2,3])3
min()获取最小值min([1,2,3])1
sum()求和(数字列表)sum([1,2,3])6
any()是否有True元素any([0,0,1])True
all()是否所有元素为Trueall([1,2,3])True

python

numbers = [10, 20, 30, 40, 50] print(len(numbers)) # 5 print(max(numbers)) # 50 print(min(numbers)) # 10 print(sum(numbers)) # 150 # any / all print(any([0, 0, 1])) # True(有真值) print(any([0, 0, 0])) # False print(all([1, 2, 3])) # True(全为真值) print(all([1, 0, 2])) # False(有假值)

六、列表推导式(高级用法)

列表推导式是Python中快速生成列表的优雅方式。

6.1 基本列表推导式

python

# 生成1-10的平方 squares = [x**2 for x in range(1, 11)] print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] # 等价于传统循环 squares = [] for x in range(1, 11): squares.append(x**2)

6.2 带条件的列表推导式

python

# 取1-20中的偶数 evens = [x for x in range(1, 21) if x % 2 == 0] print(evens) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] # 取既能被2整除又能被3整除的数 nums = [x for x in range(1, 51) if x % 2 == 0 and x % 3 == 0] print(nums) # [6, 12, 18, 24, 30, 36, 42, 48]

6.3 嵌套列表推导式

python

# 矩阵转置 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] transpose = [[row[i] for row in matrix] for i in range(3)] print(transpose) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]] # 展开嵌套列表 nested = [[1, 2], [3, 4], [5, 6]] flatten = [x for sublist in nested for x in sublist] print(flatten) # [1, 2, 3, 4, 5, 6]

6.4 带条件表达式的列表推导式

python

# 将奇数变为"奇数",偶数变为"偶数" nums = [1, 2, 3, 4, 5, 6] result = ['奇数' if x % 2 == 1 else '偶数' for x in nums] print(result) # ['奇数', '偶数', '奇数', '偶数', '奇数', '偶数']

七、列表作为栈和队列

7.1 栈(LIFO - 后进先出)

python

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

7.2 队列(FIFO - 先进先出)

python

# 使用 append 和 pop(0) 实现队列(效率低) from collections import deque # 使用 deque 实现高效队列 queue = deque() # 入队 queue.append(1) queue.append(2) queue.append(3) print(queue) # deque([1, 2, 3]) # 出队 print(queue.popleft()) # 1 print(queue.popleft()) # 2 print(queue) # deque([3])

八、综合实战案例

8.1 学生成绩管理系统

python

students = [ {'name': '张三', 'scores': [85, 90, 78]}, {'name': '李四', 'scores': [92, 88, 95]}, {'name': '王五', 'scores': [70, 75, 80]} ] # 计算每个学生的平均分 for student in students: avg = sum(student['scores']) / len(student['scores']) print(f"{student['name']} 的平均分:{avg:.1f}") # 输出: # 张三 的平均分:84.3 # 李四 的平均分:91.7 # 王五 的平均分:75.0 # 找出最高分 all_scores = [score for student in students for score in student['scores']] print(f"最高分:{max(all_scores)}") # 95

8.2 列表去重(多种方法)

python

# 方法1:使用集合(顺序可能改变) numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] unique = list(set(numbers)) print(unique) # [1, 2, 3, 4](顺序不确定) # 方法2:使用字典(保持顺序,Python 3.7+) unique = list(dict.fromkeys(numbers)) print(unique) # [1, 2, 3, 4] # 方法3:列表推导式(保持顺序) unique = [] [unique.append(x) for x in numbers if x not in unique] print(unique) # [1, 2, 3, 4]

8.3 列表分组

python

# 将数字按奇偶分组 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even = [x for x in numbers if x % 2 == 0] odd = [x for x in numbers if x % 2 == 1] print(f"偶数:{even}") # [2, 4, 6, 8, 10] print(f"奇数:{odd}") # [1, 3, 5, 7, 9]

8.4 二维列表操作(矩阵)

python

# 创建3x3单位矩阵 matrix = [[1 if i == j else 0 for j in range(3)] for i in range(3)] print(matrix) # [[1, 0, 0], [0, 1, 0], [0, 0, 1]] # 矩阵相加 A = [[1, 2], [3, 4]] B = [[5, 6], [7, 8]] C = [[A[i][j] + B[i][j] for j in range(2)] for i in range(2)] print(C) # [[6, 8], [10, 12]]

8.5 列表排序(按指定规则)

python

# 按元组第二个元素排序 pairs = [(1, 3), (4, 1), (2, 5), (3, 2)] pairs.sort(key=lambda x: x[1]) print(pairs) # [(4, 1), (3, 2), (1, 3), (2, 5)] # 按字符串长度排序 words = ['Python', 'Java', 'C', 'JavaScript', 'Go'] words.sort(key=len) print(words) # ['C', 'Go', 'Java', 'Python', 'JavaScript'] # 按字符串最后一个字母排序 words = ['apple', 'banana', 'cherry', 'date'] words.sort(key=lambda x: x[-1]) print(words) # ['banana', 'apple', 'date', 'cherry']

九、常见错误与注意事项

9.1 修改列表时遍历的错误

python

# ❌ 错误:遍历时删除元素会导致索引错乱 numbers = [1, 2, 3, 4, 5] for num in numbers: if num % 2 == 0: numbers.remove(num) print(numbers) # [1, 3, 5](勉强正确,但不可靠) # ✅ 正确:遍历副本 numbers = [1, 2, 3, 4, 5] for num in numbers[:]: # 遍历副本 if num % 2 == 0: numbers.remove(num) print(numbers) # [1, 3, 5] # ✅ 更优:使用列表推导式 numbers = [1, 2, 3, 4, 5] numbers = [num for num in numbers if num % 2 != 0] print(numbers) # [1, 3, 5]

9.2 浅拷贝 vs 深拷贝

python

# ❌ 浅拷贝:嵌套列表会被共享 original = [[1, 2], [3, 4]] copy = original[:] original[0][0] = 99 print(copy) # [[99, 2], [3, 4]](copy也被修改了) # ✅ 深拷贝:完全独立 import copy original = [[1, 2], [3, 4]] deep_copy = copy.deepcopy(original) original[0][0] = 99 print(deep_copy) # [[1, 2], [3, 4]](不受影响)

9.3 列表作为函数参数

python

# ❌ 列表作为默认参数会被共享 def add_item(item, lst=[]): lst.append(item) return lst print(add_item(1)) # [1] print(add_item(2)) # [1, 2](不是[2]!) # ✅ 使用 None 作为默认值 def add_item(item, lst=None): if lst is None: lst = [] lst.append(item) return lst print(add_item(1)) # [1] print(add_item(2)) # [2]

9.4 性能优化

python

# ❌ 频繁使用 + 拼接(每次创建新列表) result = [] for i in range(10000): result = result + [i] # 效率极低 # ✅ 使用 append result = [] for i in range(10000): result.append(i) # 效率高 # ✅ 使用列表推导式(最快) result = [i for i in range(10000)] # 最推荐

总结

本文详细介绍了Python列表的6大核心知识点:

知识点要点
定义[]list()、列表推导式
索引正向从0开始,反向从-1开始
切片list[start:end:step],灵活截取和复制
遍历for循环、enumerate、while循环
常用方法增删改查、排序、反转、复制等
列表推导式快速生成列表的优雅方式

重点掌握

  1. 索引切片是列表操作的基础

  2. 列表推导式是Python的特色语法

  3. 浅拷贝深拷贝的区别

  4. 排序sort()sorted()的区别

  5. 遍历列表时不要直接修改原列表


希望这篇教程能帮助你全面掌握Python列表操作!如果觉得有用,欢迎点赞、收藏、评论!🚀


下一篇预告:Python中字典的操作,敬请期待!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 3:45:45

MySQL 进阶篇 —— 事务 / 外键 / 索引 / 高级查询

MySQL 进阶内容&#xff0c;涵盖事务、主外键、索引及高级查询技巧一、事务&#xff08;TCL&#xff09; 1.1 什么是事务 一组 SQL 操作的逻辑单元&#xff0c;要么全部成功&#xff0c;要么全部失败。 1.2 ACID 特性特性说明原子性所有操作全部成功或全部失败一致性事务前后数…

作者头像 李华
网站建设 2026/7/19 3:44:47

安企CMS的安装-PHPStudy(小皮面板)部署

适用场景&#xff1a;Windows 本地开发环境或 Windows 服务器。PHPStudy&#xff08;小皮面板&#xff09;集成 Nginx、MySQL、PHP 等组件&#xff0c;AnQiCMS 在其中通过 Nginx 反向代理方式运行。前置准备 已安装 PHPStudy&#xff08;小皮面板&#xff09;软件运行模式切换为…

作者头像 李华
网站建设 2026/7/19 3:44:46

STM32嵌入式开发实践:从基础外设到课程设计

1. STM32课程设计概述2021年的STM32课程设计是嵌入式系统学习中的一个重要实践环节。作为基于Arm Cortex-M内核的32位微控制器&#xff0c;STM32系列以其丰富的外设资源、优异的性能和广泛的应用场景&#xff0c;成为工科学生掌握嵌入式开发的理想平台。在实际教学中&#xff0…

作者头像 李华
网站建设 2026/7/19 3:42:47

Node.js实战:六大高并发场景性能优化与架构设计

1. 为什么选择Node.js&#xff1f;从实战案例看技术优势2009年Ryan Dahl首次发布Node.js时&#xff0c;可能没想到这个基于Chrome V8引擎的JavaScript运行环境会彻底改变后端开发格局。作为常年混迹在全栈开发一线的工程师&#xff0c;我亲历了从PHP/Java传统架构向Node.js的迁…

作者头像 李华
网站建设 2026/7/19 3:42:37

新160个CrackMe054-vcrkme01、055-BCG Crackme、056-diablo2oo2‘s Crackme 01逆向分析

054无壳暴力破解字符串查找找到相关跳转&#xff0c;将该跳转给nop掉即可获取破解版本软件算法分析先是获取用户名和序列号&#xff0c;之后将这两个参数利用函数调用&#xff0c;根据返回结果&#xff0c;判断跳转成功或者跳转失败步进函数继续分析先是判断用户名和序列号的第…

作者头像 李华