for 循环是 Python 中的基本工具之一。您很可能会在 Python 之旅的一开始就遇到它们。在本文中,我将简要介绍 Python 中的 for 循环,并通过示例演示如何使用它来迭代不同类型的序列。

Python 中的 For 循环是什么?

Python 是一种功能强大的编程语言, 几乎可以用于任何领域 ,而 for 循环是其基本工具之一。您应该充分理解并掌握它,才能用 Python 构建应用程序。

for 循环允许您 可以是 列表、元组、集合、字典或字符串的 序列 。如果您需要对序列中的每个项目执行相同的代码,则可以使用它。

为了解释 for 循环的语法,我们将从一个非常基本的示例开始。假设我们想跟踪学生的原籍国。因此,我们有一个列表 new_students_countries ,其中包含我们三名新学生的原籍国。

我们使用 for 循环访问列表中的每个国家并打印它:

new_students_countries = ['Great Britain', 'Germany', 'Italy']
for country in new_students_countries:
    print(country)
	
Output:
Great Britain
Germany
Italy

这里,我们针对列表中的每个国家 new_students_countries 执行 print() 命令。结果,我们在输出中打印出每个国家的名称。

让我们回顾一下语法 for

  1. 它以 for 关键字开头,后跟我们分配给序列项的值名称( country 在本例中)。
  2. 然后,in 关键字后面跟着我们要迭代的序列的名称。
  3. 初始化部分以“ : ”结尾。
  4. 循环主体是缩进的,包含我们想要为序列的每个项目执行的代码。

使用课程 Python Basics. Part 1 。它有 95 个交互式练习,涵盖了基本的 Python 主题,包括循环。

现在我们已经熟悉了语法,让我们继续看一个例子,其中 for 循环的用处更加明显。

我们继续我们的例子。我们有一份 new_students_countries 新学生的国籍列表。现在我们还有一份 students_countries 现有学生的国籍列表。我们将使用循环 for 检查每个国家, new_students_countries 看看我们是否已经有来自同一国家的学生:

students_countries = ['Belgium', 'Czech Republic', 'France', 
                      'Germany', 'Hungary', 'Ireland',
'Netherlands', 'Spain']
new_countries = 0
for country in new_students_countries:
    if country not in students_countries:
        new_countries += 1
print('We have students from', new_countries, 'new countries.')

Output:
We have students from 2 new countries.

如您所见,我们首先用 new_countries 0 值初始化变量。然后,我们遍历列表 new_students_countries ,并检查此列表中的每个国家/地区是否在列表中 students_countries 。如果不在,则对我们来说这是一个新国家/地区,我们将它增加 new_countries 1。

由于 中有三项 new_students_countries ,因此 for 循环运行三次。我们发现已经有来自德国的学生,而英国和意大利是我们学生群体的新国家。

使用 For 循环迭代不同的序列类型

For 循环和集合

如前所述,for 循环 也适用于集合 。实际上,集合甚至更适合我们之前的示例;如果我们有几位来自同一新国家的新生,我们不希望他们被多次计算,就好像我们拥有的新国家比实际多一样。

因此,让我们考虑 new_students_countries 包含四名新生所在国家/地区的集合,其中两名来自意大利。除了用集合替换列表外,我们可以使用与上述相同的代码:

new_students_countries = {'Great Britain', 'Germany', 'Italy', 
'Italy'}
new_countries = 0
for country in new_students_countries:
    if country not in students_countries:
        new_countries += 1
print('We have students from', new_countries, 'new countries.')

Output:
We have students from 2 new countries.

因为我们使用集合而不是列表,所以我们正确地统计出只有两个新国家加入了我们的学生群体,尽管我们有三名学生来自新的国家。

For 循环和元组

我们还可以 迭代元组 。例如,如果我们有一个包含新生姓名的元组,我们可以使用以下代码询问每个学生的祖国:

new_students = ('James Bond', 'Adele Schmidt', 'Leonardo Ferrari')
for name in new_students:
    print('Where does', name, 'come from?')
	
Output:
Where does James Bond come from?
Where does Adele Schmidt come from?
Where does Leonardo Ferrari come from?

For 循环和字典

Now, we can iterate over a dictionary to answer the above question for each new student:
new_students_countries_dict = {'James Bond': 'Great Britain', 
                               'Adele Schmidt': 'Germany', 
                               'Leonardo Ferrari': 'Italy'}
for key, value in new_students_countries_dict.items():
    print(key, ' is from ', value, '.', sep = '')
	
Output:
James Bond is from Great Britain.
Adele Schmidt is from Germany.
Leonardo Ferrari is from Italy.

迭代字典的方法有很多种,这是一个单独讨论的主题。在此示例中,我迭代字典项,每个项基本上都是元组。因此,我在循环头中指定将这些元组解包为键和值。这使我能够在循环主体中访问字典键和字典值。

如果你想复习关于字典和其他数据结构的知识,可以考虑加入我们的课程 Python Data Structures in Practice .

For 循环和字符串

虽然对列表、集合、元组和字典等序列进行迭代听起来像是一项简单的任务,但对于 Python 初学者来说,了解 字符串也是序列 ,因此 使用 for 循环进行 迭代,

让我们看一个可能需要迭代字符串的例子。

我们需要每个新生为其学生账户创建一个密码。假设我们要求密码中至少有一个字符必须为大写。我们可以使用 for 循环遍历密码中的所有字符,以检查是否满足要求:

uppercase = False
password = "i@mHappy"
for char in password:
    if char.isupper():
        uppercase = True
print(uppercase)

Output:
True

在这里,我们将变量初始化 upperc为e as False 。然后,我们遍历 char 字符串密码的每个字符()以检查它是否为大写。如果满足条件,我们将变量更改 uppercase True .

使用 For 循环遍历某个范围

如果您熟悉其他编程语言,您可能已经注意到 Python 中的 for 循环有所不同。在其他语言中,您通常在数字范围内进行迭代(从 1 到 n、从 0 到 n、从 n 到 m),而不是在序列上进行迭代。也就是说,您也可以在 Python 中使用函数来执行此 range() 操作。

带有 range() 的 For 循环

首先,您可以使用该 range() 函数重复某些次数。例如,假设您要创建一个 password_new 由 8 个随机字符组成的新密码 ()。您可以使用以下 for 循环生成 8 个随机字符并将它们合并为一个名为的字符串 password_new

import random
import string
letters = string.ascii_letters
password_new = ''
for i in range(8):
    password_new += random.choice(letters)
print(password_new)

Output:
CvKYaEqi

除了必需的 停止 参数(此处为 8)之外,该 range() 函数还接受可选的 开始 步骤 参数。使用这些参数,您可以定义序列的起始数字和结束数字以及序列中每个数字之间的差值。例如,要获取从 4 到 10(含)的所有偶数,您可以使用以下 for 循环:

for i in range(4, 11, 2):
    print(i)
	
Output:
4
6
8
10

请注意,我们使用 11 而不是 10 作为上限。该 range() 函数 在输出中不包含上限 .

您还可以使用 ra通过以下方式ge() 函数 在循环主体中 访问迭代次数 for 。例如,假设我们有一个按考试成绩从高到低排序的学生姓名列表。在循环主体中 for ,我们不仅要访问列表值,还要访问它们的索引。我们可以使用该 range() 函数对列表进行 n 次迭代,其中 n 是列表的长度。在这里,我们 n n len(exam_rank)

exam_rank = ['Adele', 'James', 'Leonardo']
for i in range(len(exam_rank)):
    print(exam_rank[i], ' gets the #', i+1, ' result.', sep='')

Output:
Adele gets the #1 result.
James gets the #2 result.
Leonardo gets the #3 result.

请注意,我们用来 i+1 打印有意义的结果,因为 Python 中的索引从 0 开始。

带有 enumerate() 的 For 循环

跟踪 for 循环中的索引值的“Python 式”方法需要使用函数 enumerate() 。它允许您迭代列表和元组,同时访问循环主体中每个元素的索引 for

exam_rank = ['Adele', 'James', 'Leonardo']
for place, student in enumerate(exam_rank, start = 1):
    print(student, ' gets the #', place, ' result.', sep='')
	
Output:
Adele gets the #1 result.
James gets the #2 result.
Leonardo gets the #3 result.

当将 for 循环与 结合使用时 enumerate() ,我们可以访问循环主体中的当前计数( place 在我们的示例中)和相应的值( student 在我们的示例中)。或者,我们可以指定起始计数参数,使其从 1 开始(就像我们所做的那样),或者从任何其他对您而言有意义的数字开始。

是时候练习 Python 中的 For 循环了!

这是对 Python for 循环的一般概述,旨在快速向您展示它的工作原理以及何时可以使用它。但是,还有很多东西需要学习,更重要的是,您需要大量练习才能掌握 Python 循环 for

免费 free 基础知识。第 1 部分 Python Basics. Part 1 是 Python 新手的最佳选择之一。它涵盖了所有基本主题,包括循环 for while 循环、条件语句等等。通过 95 个交互式练习,本课程为您成为强大的 Python 用户奠定了坚实的基础。以下是 Python 基础知识课程的评论, 供有兴趣了解更多详细信息的人参考。

如果你决心成为一名 Python 程序员,我建议你从“ Learn Programming with Python 。它包括 5 门课程,有数百个交互式练习,不仅涵盖基础知识,还涵盖内置算法和函数。它们可以帮助你编写优化的应用程序和真正的 Python 游戏。

感谢阅读并祝您学习愉快!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部