Python For循环详解:遍历、range函数与列表修改实战

南乔
南乔
发布时间:2026-10-13| 5人浏览过
原创

本文深入解析Python中For循环的核心用法,涵盖可迭代对象的遍历机制、range函数的参数配置及列表原地修改技巧。通过具体代码示例,演示如何创建新列表、利用索引修改元素以及处理字符串标记计数等常见场景,帮助开发者掌握循环控制与数据结构操作。

本文详细介绍Python中For循环的具体应用方法,旨在为读者提供实用的参考与学习资源。

Python For循环基础与语法结构

Python中的For循环机制

Python主要提供两种循环结构:for循环和while循环。其中,for循环专门用于遍历可迭代对象。

可迭代对象是指能够逐个返回其元素的对象,常见的包括字符串、列表和元组等序列类型,以及字典和文件等非序列类型。此外,用户还可以通过定义迭代器和生成器来创建自定义的可迭代对象。

以下是For循环的基本示例:


# iterable of cities
cities = ['new york city', 'mountain view', 'chicago', 'los angeles']
# for loop that iterates over the cities list
for city in cities:
  print(city.title())

For循环的主要构成要素如下:

  • 循环语句的第一行以关键字 for 开头,明确标识这是一个 for 循环结构。
  • 接着是 iteration_variable in iterable 部分,它指定了正在被遍历的可迭代对象,并使用迭代变量来代表当前正在处理的元素。在示例中,迭代变量 city 在第一次迭代时取值为 “new york city”,在第二次迭代时取值为 mountain view。
  • for 循环语句的头部必须以英文冒号 : 结尾,这是Python语法的要求。
  • for 循环头部之后是缩进的代码块,该代码块会在 for 循环的每次迭代中执行。在代码块内部,可以通过迭代变量访问当前正在处理的元素值。
  • 迭代变量的名称可以自定义。常见的编程惯例是为迭代变量和可迭代对象指定语义相关的名称,通常采用单数与复数的形式区分(例如使用 ‘city' 和 ‘cities')。

利用range函数创建和修改列表

接下来演示如何利用For循环创建和修改列表:


# Creating a new list
cities = ['new york city', 'mountain view', 'chicago', 'los angeles']
capitalized_cities = []
for city in cities:
  capitalized_cities.append(city.title())

修改列表的操作相对复杂,通常需要借助内置函数:range()。

range() 是一个内置函数,用于生成不可变的数字序列。该函数接受三个参数,且必须全部为整数类型。其语法形式为 range(start=0, stop, step=1)。

  • 参数 start 指定序列的起始数字,stop 指定序列结束数字的前一个值(即比最后一个数字大 1),step 指定序列中相邻数字之间的步长。如果省略 start,默认值为 0;如果省略 step,默认值为 1(即上述语法中的 =0 和 =1)。
  • 如果在 range() 的括号内仅指定一个参数,该参数将被用作 stop 的值,而 start 和 step 使用默认值。例如,list(range(4)) 将返回结果 [0, 1, 2, 3]。
  • 如果在 range() 的括号内指定两个参数,它们将分别用作 start 和 stop 的值,step 使用默认值。例如,list(range(2, 6)) 将返回结果 [2, 3, 4, 5]。
  • 需要注意的是,在上述示例中,我们将 range 对象封装在列表函数中。这是因为 range 函数本身返回的是一个 range 对象。我们可以通过将其转换为列表,或者在 for 循环中直接遍历它,来查看 range 对象所包含的值集合。

我们可以利用 range 函数为 cities 列表中的每个元素生成索引。通过这种方式,我们可以使用 cities[index] 来访问列表中的具体元素,从而直接修改 cities 列表中的值。


cities = ['new york city', 'mountain view', 'chicago', 'los angeles']
for index in range(len(cities)):
  cities[index] = cities[index].title()

虽然修改列表是 range 函数的一个常见应用场景,但这并非其唯一用途。在实际开发中,你将经常结合使用 range 和 for 循环来重复执行某项操作特定的次数。


for i in range(3)
  print("Hi!")

For循环实战练习与解决方案

For循环相关练习

请编写一个遍历 names 列表以创建 usernames 列表的 for 循环。要求为每个姓名生成用户名,具体规则是将姓名转换为全小写,并用下划线替换空格。针对以下列表运行该 for 循环:


names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]

执行后预期生成的列表为:


usernames = ["joey_tribbiani", "monica_geller", "chandler_bing", "phoebe_buffay"]

参考解决方案如下:


names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
# write your for loop here
for name in names:
  usernames.append(name.lower().replace(" ", "_"))
print(usernames)

假设我们的目标不是创建新列表,而是直接修改 names 列表本身,并编写了以下代码。请问这段代码的实际作用是什么?


names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
for name in names:
  name = name.lower().replace(" ", "_")
print(names)

代码分析: 这段代码实际上没有产生预期的列表修改效果。在每次迭代过程中,name 变量被赋值为从列表中获取的一个字符串副本。随后的赋值语句创建了一个新的字符串 (name.lower().replace(" ", "_")) ,并将 name 变量指向这个新字符串,但这并未影响原始列表。若要修改列表,必须使用 range 函数获取索引并对列表本身进行操作。

请编写一个使用 range() 遍历 usernames 中职位以修改该列表的 for 循环。与上一道练习类似,要求将每个姓名转换为全小写形式,并用下划线替换空格。运行 for 循环后,以下列表:


usernames = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]

应被更改为:


usernames = ["joey_tribbiani", "monica_geller", "chandler_bing", "phoebe_buffay"]

参考解决方案如下:


usernames = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
# escreva seu loop for aqui
for index in range(len(usernames)):
  usernames[index] = usernames[index].lower().replace(" ", "_")
print(usernames)

标记计数器练习: 请编写一个 for 循环,用于遍历字符串列表 tokens,并统计其中包含多少个 XML 标记。

参考解决方案如下:


tokens = ['<greeting>', 'Hello World!', '</greeting>']
count = 0
# write your for loop here
for t in tokens:
  if t[0] == '<' and t[-1] == '>':
    count += 1
print(count)

创建HTML列表练习: 请编写一个 for 循环,用于遍历字符串列表并构建单个字符串 html_str,该字符串应构成一个HTML列表。例如,如果输入列表是 items = ['first string', 'second string],输出 html_str 的结果应类似于:


<ul>
<li>first string</li>
<li>second string</li>
</ul>

参考解决方案如下:


items = ['first string', 'second string']
html_str = "<ul>\n"
for item in items:
  html_str += "<li>" + item + "</li>\n"
html_str += "</ul>"
print(html_str)

如果您对Python相关内容感兴趣,建议查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》。

希望本文所述内容能对您的Python程序设计学习有所帮助。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。