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 的通用控制逻辑
  • 列表的概念、索引、切片、遍历等基本操作
  • 可变对象特性及深浅拷贝的区别
  • 最常用的列表内置方法

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

相关推荐
lancyu41 分钟前
关于多轮对话机器人的上下文Token优化和解决方案
人工智能·python·深度学习·机器学习·chatgpt·机器人·prompt
草莓橙子碗1 小时前
Claude 使用指南
开发语言·python
工具分享1 小时前
陪跑跟品爆单AI选品助手,高效跟品会赔本吗?
人工智能·python
COOLMO研究AI2 小时前
Python 如何实现 AI API 的提示词(Prompt)版本管理与热更新
人工智能·python·prompt
老郑聊AI业财智造2 小时前
Transformer 技术架构与源码分析
人工智能·python·深度学习·语言模型·架构·transformer·软件工程
程序员三藏2 小时前
自动化测试用例编写详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
230万光年的思念2 小时前
分子动力学模拟参考文献
python
HongXu_CaiYi3 小时前
0103-python相关-函数、文件
python
vortex54 小时前
从Conda到UV:Python项目依赖管理的现代演进
python·conda·uv
何以解忧,唯有..4 小时前
Python time 模块详解:时间处理与日期操作指南
开发语言·python