Python - for 循环



Python 中的for 循环可以迭代任何序列的元素,例如列表、元组或字符串。它对序列中的每个项目执行相同的操作。此循环以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 循环语句与元组

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

示例

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

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 循环语句与列表

Python 的列表对象也是一个索引序列,因此您可以使用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

Python 循环语句与 range 对象

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

语法

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

range(start, stop, step)

其中,

  • Start - range的起始值。可选。默认为0

  • Stop - range 达到 stop-1 结束

  • Step - range 中的整数以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 循环语句与字典

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

示例

对字典对象运行简单的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对象是键值元组列表,可以在其上运行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')

在 For 循环中使用 else 语句

Python 支持在循环语句中使用else语句。但是,当循环遍历列表完毕时,将执行else语句。

示例

以下示例说明了else语句与for语句的组合,该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
广告