学了列表的增删改查、常用方法、内置函数,你已经能把列表玩出花了。但还有一种操作你没学过——把列表里的元素一个一个拿出来处理。
这就叫遍历。
遍历列表一共有4种写法:1种while循环 + 3种for循环。第1种最累人,第4种最爽快。我们一个一个来看。
遍历,就是把容器中的元素依次取出并对它们进行处理的过程。
打个比方:列表就像一排储物柜,遍历就是你从第0个柜子开始,一个一个打开,把里面的东西拿出来看看,直到最后一个柜子。
主要两种方式:while循环遍历 和 for循环遍历。
先看代码,有个成绩列表,要把每个成绩打印出来:
score_list = [62, 50, 85, 92, 77, 58, 88]
index = 0 # 第1步:建计数变量,从0开始
while index < len(score_list): # 第2步:循环条件,小于列表长度
print(score_list[index]) # 第3步:用下标取元素
index += 1 # 第4步:计数器+1,别忘了!运行结果:依次打印 62、50、85、92、77、58、88。
你看,while循环遍历需要你自己管4件事:建变量、写条件、取元素、加计数器。少一步都不行。

坑1:index从1开始
index = 1 # 从1开始
while index < len(score_list):
print(score_list[index])
index += 1结果:第一个成绩62直接被跳过了!因为第一次进来访问的是 score_list[1],也就是50,62丢了。
坑2:写了小于等于
index = 0
while index <= len(score_list): # 写了等号
print(score_list[index])
index += 1结果:IndexError报错!列表有7个元素,下标0到6。最后一次循环 index=7,但 score_list[7] 根本不存在。
坑3:忘了写 index += 1
不写这行,index永远是0,while index < 7 永远成立——死循环,电脑跑到冒烟。
while遍历就像你自己搬砖:得记着从第几块开始、搬完别多数、搬完别忘了往前走。少记一个就出事。
同样是那个成绩列表,for循环只需要两行:
score_list = [62, 50, 85, 92, 77, 58, 88]
for item in score_list:
print(item)运行结果一模一样:62、50、85、92、77、58、88。
就这样?对,就这样。
不需要建计数变量,不需要写循环条件,不需要手动加1。for item in score_list 的意思是:列表自己排好队,元素一个一个走到 item 里,你只管处理就行。
如果用"排队"来比喻——while循环是你自己拿着号一个一个去找人,for循环是人自动排队从你面前走过。
变量名建议用 item、score 这类有意义的名字,不要用 index。因为 index 通常表示索引、编号,用它当元素变量名会误导别人以为拿到的是下标。
这种写法不直接拿元素,而是先拿到下标,再通过下标取元素:
score_list = [62, 50, 85, 92, 77, 58, 88]
for index in range(len(score_list)):
print(score_list[index])拆解一下:
效果跟写法1完全一样,但明显更麻烦。那什么时候用这种写法?当你需要下标本身的时候——比如要根据下标做判断、修改元素等。
前两种for循环,要么只拿到元素,要么只拿到下标。第三种写法两个一起拿:
score_list = [62, 50, 85, 92, 77, 58, 88]
for index, item in enumerate(score_list):
print(index, item)运行结果:
0 62
1 50
2 85
3 92
4 77
5 58
6 88左边是编号,右边是元素,一次全拿到。
enumerate 是Python内置函数,你把列表交给它,它就帮你把每个元素配上一个编号,循环的时候编号和元素一起给你。
注意语法:index, item 中间用逗号隔开,两个变量同时接收。
如果用"排队"比喻——这种写法就像每个人走过你面前时,还自己举着号牌。你既看到人(元素),又看到号(下标),不用自己数。
enumerate 还能接收一个 start 参数,控制编号从几开始:
score_list = [62, 50, 85, 92, 77, 58, 88]
for index, item in enumerate(score_list, start=5):
print(index, item)运行结果:
5 62
6 50
7 85
8 92
9 77
10 58
11 88编号从5开始了!
但注意一个特别重要的点:start 改的只是遍历时的编号显示,不会改变列表中元素的真实下标。
验证一下——在循环里打印 score_list[0]:
for index, item in enumerate(score_list, start=5):
print(index, item, score_list[0])
# 循环外再打印一次
print("最后的打印", score_list[0])运行结果:
5 62 62
6 50 62
7 85 62
...
11 88 62
最后的打印 62不管 start 是几,score_list[0] 永远是62。因为列表里第0个元素就是62,start 改的是 enumerate 给你的编号,不是列表内部的真实位置。
start参数就像给每个人换了个新工牌号,但他们在队伍里的实际位置没变。
写法 | 代码量 | 能拿到什么 | 难度 | 推荐场景 |
① while循环 | 4行 | 下标(需自己取元素) | ⭐⭐⭐⭐ | 不推荐,容易出错 |
② for item in list | 2行 | 只拿元素 | ⭐ | 最常用,只需元素时首选 |
③ for index in range(len(list)) | 2行 | 只拿下标 | ⭐⭐ | 需要下标做判断时 |
④ for index, item in enumerate(list) | 2行 | 下标和元素一起拿 | ⭐⭐ | 同时需要编号和元素时 |
遍历列表就是"一个一个拿出来处理",4种写法各有特点:
第1种while最累——自己建变量、写条件、加计数器,三个坑等着你踩:起始值写1丢数据、写等号越界报错、忘加1死循环。
第2种for直接遍历最简单——两行搞定,元素自动排队到你手上。只需要元素时,用它准没错。
第3种for+range+len——按编号取人,需要下标本身时才用。
第4种for+enumerate最爽——编号和元素一起到手,还支持start参数自定义起始编号。需要同时拿到下标和元素时,它是唯一选择。
记住一句话:遍历可迭代对象,for循环是首选。
更新时间:2026-07-22
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302034903号