Python - For 循环



Python 中的 for 循环提供了循环访问任何序列的项目的能力,例如列表、tuples 或字符串。它对序列的每个项目执行相同的操作。此循环以 for 关键字开头,后跟表示序列中当前项目的变量。关键字 in 将变量链接到要迭代的序列。冒号 (:) 在循环标头的末尾使用,其下方的缩进代码块对序列中的每个项执行一次。

Python for 循环的语法


for iterating_var in sequence:
	 	statement(s)

此处,iterating_var 是一个变量,在每次迭代期间,每个序列项的值都将分配给该变量。Statements 表示要重复执行的代码块。

在循环开始之前,将对序列进行评估。如果是列表,则首先计算表达式列表(如果有)。然后,将序列中的第一项(索引 0 处)分配给 iterating_var 变量。

在每次迭代期间,语句块以当前值 iterating_var 执行。之后,将序列中的下一项分配给 iterating_var,循环将继续,直到整个序列用完。

Python for 循环流程图

以程图说明了 for 循环的工作原理 -

forloop

Python for 带字符串的循环

字符串是一系列 Unicode 字母,每个字母都有一个位置索引。由于它是一个序列,因此您可以使用 for 循环迭代其字符。

以下示例比较每个字符,并显示它是否不是元音('a'、'e'、'i'、'o'、'u')。


zen = '''
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
'''
for char in zen:
	 	if char not in 'aeiou':
	 	 	 print (char, end='')

在执行时,此代码将生成以下输出 -

Btfl s bttr thn gly.
Explct s bttr thn mplct.
Smpl s bttr thn cmplx.
Cmplx s bttr thn cmplctd.

Python for 循环与tuples

Python 的 tuples 对象也是一个索引序列,因此你可以使用 for 循环遍历其项目。

在下面的示例中,for 循环遍历包含整数的 tuples 并返回所有数字的总数。


numbers = (34,54,67,21,78,97,45,44,80,19)
total = 0
for num in numbers:
	 	total += num
print ("Total =", total)

在运行此代码时,它将生成以下输出 -

Total = 539

Python for 循环与列表

Python 的 list 对象也是一个索引序列,因此你可以使用 for 循环迭代其项目。

在下面的示例中,for 循环遍历包含整数的列表,并仅打印可被 2 整除的整数。


numbers = [34,54,67,21,78,97,45,44,80,19]
total = 0
for num in numbers:
	 	if num%2 == 0:
	 	 	 print (num)

当您执行此代码时,它将显示以下结果 -

34
54
78
44
80

带有 Range 对象的 Python for 循环

Python 的内置 range() 函数返回一个迭代器对象,该对象流式传输数字序列。此对象包含从 start 到 stop 的整数,由 step 参数分隔。你也可以运行一个 for 循环 和 range 一样。

语法

range() 函数具有以下语法 -


 range(start, stop, step)

哪里

  • Start - 范围的起始值。自选。默认值为 0
  • Stop − 范围上升到 stop-1
  • Step − 范围 中按 step 值递增的整数。选项,默认值为 1。

在此示例中,我们将看到 range 与 for 循环的用法。


for num in range(5):
	 	print (num, end=' ')
print()
for num in range(10, 20):
	 	print (num, end=' ')
print()
for num in range(1, 10, 2):
	 	print (num, end=' ')

当您运行上述代码时,它将产生以下输出 -

0 1 2 3 4
10 11 12 13 14 15 16 17 18 19
1 3 5 7 9

带有字典的 Python for 循环

与列表、 tuples 或字符串不同,Python 中的字典数据类型不是序列,因为项目没有位置索引。但是,仍然可以使用 for 循环遍历字典。

对 dictionary 对象运行简单的 for 循环会遍历其中使用的键。


numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
	 	print (x)

在执行时,此代码将生成以下输出 -

10
20
30
40

一旦我们能够获取密钥,就可以通过使用方括号运算符或 get() 方法轻松访问其关联值。

以下示例说明了上述方法。


numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
	 	print (x,":",numbers[x])

它将产生以下输出 -

10 : Ten
20 : Twenty
30 : Thirty
40 : Forty

dict 类的 items()、keys() 和 values() 方法分别返回视图对象 dict_items、dict_keys 和 dict_values。这些对象是迭代器,因此我们可以对它们运行 for 循环。

dict_items 对象是一个键值 tuples 列表,可以对其运行 for 循环,如下所示 -


numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers.items():
	 	print (x)

它将产生以下输出 -

(10, 'Ten')
(20, 'Twenty')
(30, 'Thirty')
(40, 'Forty')

将 else 语句与 For 循环一起使用

Python 支持将 else 语句与 loop 语句相关联。但是,当循环用尽迭代列表时,将执行 else 语句。

以下示例说明了 else 语句与 for 语句的组合,该语句搜索从 10 到 20 的质数。


#For loop to iterate between 10 to 20
for num in range(10, 20): 	
	 	#For loop to iterate on the factors	
	 	for i in range(2,num):	
	 	 	 #If statement to determine the first factor
	 	 	 if num%i == 0: 	 	 	
	 	 	 	 	#To calculate the second factor
	 	 	 	 	j=num/i 	 	 	 	 	
	 	 	 	 	print ("%d equals %d * %d" % (num,i,j))
	 	 	 	 	#To move to the next number
	 	 	 	 	break	
	 	 	 else: 	 	 	 	 	 	 	 	 	
	 	 	 	 	print (num, "is a prime number")
	 	 	 	 	break

执行上述代码时,它会产生以下结果 -

10 equals 2 * 5
11 is a prime number
12 equals 2 * 6
13 is a prime number
14 equals 2 * 7
15 equals 3 * 5
16 equals 2 * 8
17 is a prime number
18 equals 2 * 9
19 is a prime number