Python for循环

Python 中的 for 循环是一个迭代函数。如果你有一个序列对象,比如一个列表,你可以使用 for 循环来迭代列表中包含的项目。

for 循环的功能与其他多个编程语言中所见的并没有太大不同。

在本文中,我们将详细探讨 Python 中的 for 循环,并学习如何迭代不同的序列,包括列表、元组等。此外,我们还将学习如何使用 break 和 continue 语句来控制循环的流程。

何时使用 for 循环

每当你需要重复执行一段固定次数的代码时。如果你不知道需要重复执行的次数,而是根据条件来确定,则应使用“while 循环”语句。

Python 中的 for 循环语法

Python 中 for 循环的基本语法类似于下面提到的语法。

for itarator_variable in sequence_name:
	Statements
	. . .
	Statements

Python for循环语法详解

  • 语句的第一个单词以关键字“for”开头,这表示for循环的开始。
  • 然后是迭代变量,它遍历序列并可在循环中使用以执行各种功能
  • 接下来是Python中的“in”关键字,它告诉迭代变量循环遍历序列中的元素
  • 最后,我们有序列变量,它可以是列表、元组或任何其他类型的迭代器。
  • 循环的语句部分是您可以使用迭代变量并执行各种函数的地方

Python字符串是一系列字符。如果在您的任何编程应用程序中,您需要逐个检查字符串的字符,您可以在这里使用for循环。

下面是这样工作的示例。

word="anaconda"
for letter in word:
	print (letter)

输出:

a
n
a
c
o
n
d
a

这个循环起作用的原因是因为Python将“字符串”视为字符序列,而不是将字符串视为整体。

使用for循环迭代Python列表或元组

列表元组都是可迭代对象。现在让我们看看如何循环遍历这些对象中的元素。

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
	print (word)

输出:

Apple
Banana
Car
Dolphin

现在,让我们继续并开始在这里循环遍历元组的元素。

nums = (1, 2, 3, 4)

sum_nums = 0

for num in nums:
    sum_nums = sum_nums + num

print(f'Sum of numbers is {sum_nums}')

# 输出
# 数字的总和是10

嵌套Python for循环

当我们在另一个for循环内部有一个for循环时,这被称为嵌套for循环。嵌套for循环有多个应用场景。

考虑上面的列表示例。for循环从列表中打印出单词。但如果我们想要打印出列表中每个单词的各个字符呢?

这就是嵌套的for循环更好的地方。第一个循环(父循环)将逐个遍历单词。第二个循环(子循环)将遍历每个单词的字符。

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
        #此循环从列表中获取单词
        print ("The following lines will print each letters of "+word)
        for letter in word:
                #此循环获取单词的字母
                print (letter)
        print("") #此打印用于打印空行

输出

A nested loop is structurally similar to nested if statements

Python for循环与range()函数

Python范围是内置函数之一。当您希望for循环运行特定次数,或者需要指定要打印的对象范围时,range函数非常有效。

在使用range()时,您可以传递1到3个整数参数:

  • start指定序列开始的整数值,如果不包括此参数,则start从0开始
  • stop始终是必需的,它是计数但不包括的整数
  • step 设置下一次迭代增加(或在负数情况下减少)的量,如果省略,则 step 默认为 1

考虑以下示例,我想打印数字 1、2 和 3:

for x in range(3):
    print("Printing:", x)
	
# 输出

# 打印:0
# 打印:1
# 打印:2

range 函数除了接受开始和停止参数外,还接受另一个参数。这就是 步长参数。它告诉 range 函数在每次计数之间跳过多少个数字。

在下面的示例中,我使用了数字 3 作为步长,你可以看到输出的数字是前一个数字 + 3。

for n in range(1, 10, 3):
    print("Printing with step:", n)
	
# 输出

# 使用步长打印:1
# 使用步长打印:4
# 使用步长打印:7

我们还可以使用负值作为我们的 step 参数进行反向迭代,但我们需要相应地调整我们的 startstop 参数:

for i in range(100,0,-10):
   print(i)

在这里,100 是 start 值,0 是 stop 值,-10 是范围,所以循环从 100 开始,到 0 结束,每次迭代减少 10。这在输出中发生:

Output
100 90 80 70 60 50 40 30 20 10

在Python编程中,for循环经常使用range()序列类型作为其迭代参数。

带有for循环的break语句

break语句用于提前退出for循环。当满足特定条件时,用于终止for循环。

假设我们有一个数字列表,我们想要检查数字是否存在。我们可以遍历数字列表,如果找到数字,则中断循环,因为我们不需要继续迭代剩余的元素。

在这种情况下,我们将使用Python if else条件以及我们的for循环。

nums = [1, 2, 3, 4, 5, 6]

n = 2

found = False
for num in nums:
    if n == num:
        found = True
        break

print(f'List contains {n}: {found}')

# 输出
# 列表包含2:True

带有for循环的continue语句

我们可以在for循环中使用continue语句,以便针对特定条件跳过for循环体的执行。

假设我们有一个数字列表,我们想要打印正数的总和。我们可以使用 continue 语句来跳过负数的 for 循环。

nums = [1, 2, -3, 4, -5, 6]

sum_positives = 0

for num in nums:
    if num < 0:
        continue
    sum_positives += num

print(f'Sum of Positive Numbers: {sum_positives}')

Python for 循环中的 else 块

我们可以在 Python for 循环 中使用 else 块。当 for 循环 不被 break 语句终止时,else 块才会执行。

假设我们有一个函数,如果所有数字都是偶数,则打印数字的总和。

如果存在奇数,我们可以使用 break 语句终止 for 循环。我们可以在 else 部分打印总和,这样它只会在 for 循环正常执行时打印。

def print_sum_even_nums(even_nums):
    total = 0

    for x in even_nums:
        if x % 2 != 0:
            break

        total += x
    else:
        print("For loop executed normally")
        print(f'Sum of numbers {total}')


# 这将打印总和
print_sum_even_nums([2, 4, 6, 8])

# 这不会打印总和,因为序列中有奇数
print_sum_even_nums([2, 4, 5, 8])

# 输出

# For 循环正常执行
# 数字的总和为 20

使用顺序数据类型的 for 循环

列表和其他数据序列类型也可以作为迭代参数在for循环中使用。与迭代range()不同,你可以定义一个列表并通过该列表进行迭代。

我们将一个列表赋给一个变量,然后通过列表进行迭代:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

在这种情况下,我们打印出列表中的每个项目。虽然我们使用了变量shark,但我们可以使用任何其他有效的变量名,并且会得到相同的输出:

Output
hammerhead great white dogfish frilled bullhead requiem

上面的输出显示for循环通过列表进行了迭代,并且每行打印了列表中的每个项目。

列表和其他基于序列的数据类型,如字符串元组,通常与循环一起使用,因为它们是可迭代的。你可以将这些数据类型与range()结合使用以将项目添加到列表中,例如:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for item in range(len(sharks)):
   sharks.append('shark')

print(sharks)
Output
['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

在这里,我们为每个sharks列表的长度添加了一个占位符字符串'shark'

你也可以使用for循环从头开始构建一个列表:

integers = []

for i in range(10):
   integers.append(i)

print(integers)

在这个例子中,列表integers被初始化为空,但是for循环会像这样填充列表:

Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

类似地,我们可以遍历字符串:

sammy = 'Sammy'

for letter in sammy:
   print(letter)
Output
S a m m y

遍历元组的方式与以上遍历列表或字符串的格式相同。

当遍历字典时,重要的是要记住键值对的结构,以确保调用字典的正确元素。这里是一个同时调用键和值的示例:

sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}

for key in sammy_shark:
   print(key + ': ' + sammy_shark[key])
Output
name: Sammy animal: shark location: ocean color: blue

在使用带有for循环的字典时,迭代变量对应于字典的键,dictionary_variable[iterating_variable]对应于值。在上面的例子中,迭代变量key被用来代表键,sammy_shark[key]被用来代表值。

循环经常被用来迭代和操作顺序数据类型。

结论

Python中的for循环与其他编程语言非常相似。我们可以使用break和continue语句来改变执行。然而,在Python中,for循环也可以有可选的else块。

I hope you have gained some interesting ideas from the tutorial above. If you have any questions, let us know in the comments below.

从这里开始,您可以通过阅读关于while循环break、continue和pass语句的教程来继续学习循环。

要在项目中使用for循环,请参考以下教程:

Source:
https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3