Python中的for
语句能够遍历任何序列的项目,例如列表或字符串。
语法
for iterating_var in sequence:
statements(s)
如果序列包含表达式列表,则首先进行评估求值。 然后,序列中的第一个项目被分配给迭代变量iterating_var
。 接下来,执行语句块(statement(s)
)。列表中的每个项目都分配给iterating_var
,并且执行语句块,直到整个序列耗尽完成。
流程图
range()函数
内置的函数range()
是对一系列数字进行迭代的函数。它生成一个算术进化的迭代器。
示例
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
示例
range()
生成一个迭代器,以处理0
到n-1
的整数。要获取序列的列表对象,可将其列为list()
。现在可以使用for
语句迭代此列表。
>>> for var in list(range(5)):
print (var)
上面示例代码将产生以下输出 -
0
1
2
3
4
示例
#!/usr/bin/python3
for letter in 'Python': # traversal of a string sequence
print ('Current Letter :', letter)
print()
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # traversal of List sequence
print ('Current fruit :', fruit)
print ("Good bye!")
当执行上述代码时,会产生以下结果 -
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
按序列索引迭代
迭代遍历每个项目的另一种方法是通过索引偏移到序列的索引位置。以下是一个简单的例子 -
示例
#!/usr/bin/python3
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print ('Current fruit :', fruits[index])
print ("Good bye!")
当执行上述代码时,会产生以下结果 -
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
在这里调用内置len()
函数,该函数计算元组中的元素总数以及内置range()
函数提供了迭代的实际顺序。
循环中使用else语句
Python支持在循环语句中关联else
语句。
如果
else
语句与for
循环一起使用,则只有在for
循环正常终止(而不是遇到break
语句)时才执行else
块。如果
else
语句与while
循环一起使用,则在条件变为false
时执行else
语句。
示例
以下示例说明了使用else
语句在for
循环中,搜索列表中的偶数的用法。
#!/usr/bin/python3
numbers = [11,33,55,39,55,75,37,21,23,41,13]
for num in numbers:
if num%2 == 0:
print ('the list contains an even number')
break
else:
print ('the list doesnot contain even number')
当执行上述代码时,会产生以下结果 -
the list does not contain even number