Python for循环

Python for循环

Python中的 for 循环可以遍历任何序列的项,例如列表或字符串。

语法

for iterating_var in sequence:
   statements(s)

如果一个序列包含一个表达式列表,那么它首先被评估。然后,序列中的第一项(索引为0)被赋值给迭代变量 iterating_var。

接下来,执行语句块。列表中的每一项都被赋值给迭代变量,然后执行语句块,直到整个序列用尽。

以下流程图说明了 for 循环的工作原理:

Python for循环

由于循环在序列中的每个成员元素上执行,因此不需要明确验证控制循环的布尔表达式(与 while 循环中的情况不同)。

诸如列表、元组或字符串之类的序列对象被称为可迭代对象,因为 for 循环通过集合进行迭代。任何迭代器对象都可以通过 for 循环进行迭代。

字典的 items()、keys() 和 values() 方法返回的视图对象也是可迭代的,因此我们可以用 for 循环运行它们。

Python 内置的 range() 函数返回一个流式传输数字序列的迭代器对象。我们可以用 range 运行 for 循环。

在字符串中使用for循环

字符串是一系列 Unicode 字母,每个字母都有一个位置索引。以下示例将比较每个字符,并显示它是否不是元音(’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.

在元组中使用for循环

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

在列表使用for循环

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

在Range对象中使用for循环

Python的内置range()函数返回一个range对象。Python的range对象是一个迭代器,每次迭代生成一个整数。该对象包含从开始到结束的整数,由步长参数分隔。

语法

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

range(start, stop, step)

参数

  • Start − 范围的起始值。可选。默认值为0。

  • Stop − 范围的终止值。不包含该值。

  • Step − 范围中的整数按照指定的步长递增。可选,默认值为1。

返回值

range() 函数返回一个范围对象。它可以被解析为列表序列。

示例1

numbers = range(5)
'''
start is 0 by default,
step is 1 by default,
range generated from 0 to 4
'''
print (list(numbers))
# step is 1 by default, range generated from 10 to 19
numbers = range(10,20)
print (list(numbers))
# range generated from 1 to 10 increment by step of 2
numbers = range(1, 10, 2)
print (list(numbers))

输出

执行后,此代码将产生以下输出−

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

示例2

一旦我们获得了范围,我们就可以使用 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

示例3:阶乘

阶乘是从1乘到那个数n的所有数字的乘积。也可以定义为从1乘到n的数字的乘积。

Factorial of a number n! = 1 * 2 * . . . . . * n

我们使用range()函数来获得从1到n-1的数字序列,然后进行累积乘法来得到阶乘的值。

fact=1
N = 5
for x in range(1, N+1):
   fact=fact*x
print ("factorial of {} is {}".format(N, fact))

输出

运行此代码将产生以下输出:

factorial of 5 is 120

在上面的程序中,改变N的值以获得不同数字的阶乘值。

在序列索引使用for循环

要遍历一个序列,我们可以使用range()函数获取索引列表。

Indices = range(len(sequence))

然后我们可以按照以下方式形成一个 for 循环:

numbers = [34,54,67,21,78]
indices = range(len(numbers))
for index in indices:
   print ("index:",index, "number:",numbers[index])

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

index: 0 number: 34
index: 1 number: 54
index: 2 number: 67
index: 3 number: 21
index: 4 number: 78

在字典使用for循环

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

在字典对象上运行简单的 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')

在这里,”x”是从dict_items迭代器中的元组元素。我们可以进一步将这个元组解包成两个不同的变量。请检查以下代码:

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

它将产生以下 输出

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

同样地,dict_keys对象中的键集合可以被遍历。看看下面的例子:

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

它将产生相同的 输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程