Python 循环与列表详解:流程控制与核心数据结构

Python 循环与列表详解:流程控制与核心数据结构

在 Python 编程中,循环和列表是基础中的基础。循环赋予程序重复执行的能力,列表则是日常开发中使用频率最高的容器类型。本文将两部分内容整合在一起,系统梳理 whilefor 循环的用法,以及列表的概念、操作、深浅拷贝和内置方法。


一、循环语句:重复执行的逻辑

1. while 循环:基于条件的循环

当不确定具体循环次数,但知道何时停止时,使用 while 最为合适。

语法:

python 复制代码
while 条件:
    语句块

示例:打印 1 到 5

python 复制代码
i = 1
while i <= 5:
    print(i)
    i += 1   # 改变条件,避免死循环

2. for 循环:遍历序列的循环

当需要遍历一个集合中的每个元素,或循环次数已知时,使用 for 更为简洁。

语法:

python 复制代码
for 变量 in 可迭代对象:
    语句块

示例:遍历列表

python 复制代码
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
    print(fruit)

示例:结合 range() 实现固定次数循环

python 复制代码
for i in range(1, 6):   # 1,2,3,4,5
    print(i)

3. break 与 continue:循环流程控制

breakcontinuewhilefor 中均能使用,用于实现更灵活的控制逻辑。

  • break:立即终止整个循环,不再执行后续迭代。
  • continue:跳过本次循环中剩余的代码,直接进入下一次迭代。

示例:break

python 复制代码
for i in range(1, 10):
    if i == 5:
        break
    print(i)
# 输出:1 2 3 4

示例:continue

python 复制代码
for i in range(1, 6):
    if i == 3:
        continue
    print(i)
# 输出:1 2 4 5

4. while 与 for 对比

特性 while 循环 for 循环
适用场景 次数不定,依赖条件 遍历序列或次数明确
常用搭配 条件变量、状态标志 range()、列表、字符串等
优点 灵活可处理复杂退出条件 简洁易读,防止死循环

二、列表:最常用的可变序列

列表是一种有序、可变、允许重复元素的数据结构,可以容纳任意类型的数据,是 Python 中使用频率最高的容器之一。

1. 列表的基本操作

python 复制代码
l = [1, 2, 3, 4]
索引

通过下标访问元素,索引从 0 开始,支持负索引。

python 复制代码
print(l[0])   # 1
print(l[-1])  # 4
切片

利用 [起始:结束:步长] 获取子列表,也可用于修改部分元素。

python 复制代码
# 查询切片
print(l[0:3:2])    # [1, 3](索引0到2,步长2)
# 通过切片修改
l[0:2] = [10, 20]  # l 变为 [10, 20, 3, 4]
成员检查

使用 in / not in 判断元素是否在列表中。

python 复制代码
print(5 in l)   # False
print(2 in l)   # True
拼接与重复

列表可通过 + 拼接,通过 * 重复。

python 复制代码
l1 = [1, 2, 3]
l2 = [4, 5, 6]
print(l1 + l2)  # [1, 2, 3, 4, 5, 6]
遍历
python 复制代码
for i in l:
    print(i)
计算长度
python 复制代码
print(len(l))   # 4

2. 列表的可变性

列表是可变对象,修改列表元素不会创建新对象,而是在原地址上直接修改。

python 复制代码
a = [1, 2, 3]
print(id(a))  # 初始地址
a[0] = 10
print(id(a))  # 地址不变

如果使用赋值语句 b = a,则两个变量会指向同一个列表对象,修改其中一个会影响另一个。


3. 列表的深浅拷贝

当需要复制列表又不希望与原始数据互相干扰时,必须理解拷贝机制。

浅拷贝

浅拷贝会创建一个新的列表对象,但内部的元素仍然与原始列表共享引用。修改不可变元素无影响,但修改可变子对象时,双方都会受影响。

常见浅拷贝方式:list.copy()l[:]copy.copy()

python 复制代码
old = [1, 2, [3, 4]]
new = old.copy()
new[0] = 10          # 只影响新列表
new[2][0] = 30       # 内部列表被共享,会影响原列表
print(old)           # [1, 2, [30, 4]]
深拷贝

深拷贝会递归复制所有层级的对象,新旧列表完全独立,互不影响。需要使用 copy.deepcopy()

python 复制代码
import copy
old = [1, 2, [3, 4]]
new = copy.deepcopy(old)
new[2][0] = 30
print(old)           # [1, 2, [3, 4]] 保持原样

使用建议: 简单列表中无嵌套对象时,浅拷贝足够;列表中若包含列表、字典等可变对象,应视情况使用深拷贝。


4. 列表常用内置方法

方法 作用 示例
remove(x) 删除第一个值为 x 的元素 l.remove(2)
clear() 清空整个列表 l.clear()
sort() 原地升序排序 l.sort()
reverse() 原地反转 l.reverse()
count(x) 统计元素 x 出现的次数 l.count(3)
index(x) 返回元素 x 首次出现的索引 l.index(3)

示例:

python 复制代码
data = [3, 1, 2, 3, 4]

data.sort()                # [1, 2, 3, 3, 4]
data.reverse()             # [4, 3, 3, 2, 1]
print(data.count(3))       # 2
print(data.index(4))       # 0
data.remove(3)             # 删除第一个3,列表变为 [4, 3, 2, 1]
data.clear()               # []

小结

本文合并了 Python 循环和列表两大基础主题,覆盖了:

  • whilefor 循环的语法和适用场景
  • breakcontinue 的通用控制逻辑
  • 列表的概念、索引、切片、遍历等基本操作
  • 可变对象特性及深浅拷贝的区别
  • 最常用的列表内置方法

掌握好循环与列表,就具备了处理批量数据和控制程序逻辑的核心能力。建议在练习中将两者灵活结合,为后续学习函数、字典和组合数据结构打好基础。

相关推荐
NiceCloud喜云2 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
AI玫瑰助手2 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
weixin_468466852 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
小糖学代码3 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨3 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
橙橙笔记3 小时前
Python的学习第一部分
python·学习
voidmort4 小时前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法
biter down5 小时前
基于 Pywinauto 的 QQ 音乐 GUI 自动化测试实践
python
人道领域5 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法
EntyIU6 小时前
mineru从安装部署到测试使用完整指南
python·ocr