Python For循环详解:遍历、range函数与列表修改实战
本文深入解析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程序设计学习有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









