for循环
Python使用for循环遍历任何可迭代对象,将可迭代对象中的元素依次获取,获取完最后一个元素后循环停止。
for循环的基本结构
for循环语法如下:
for variable in sequence:
statements
else:
statements
else部分可以省略。sequence是可迭代对象,for循环依次将sequence中的元素获取赋值给变量variable,每循环一次,variable被赋值一次,直到sequence中的最后一个元素被获取完,循环结束。流程图如图:
示例如下:
>>> s = [1,2,3,4,5]
>>> for item in s: # 依次将列表中的元素赋值给item,取完最后一个元素5,循环停止
... print(item)
1
2
3
4
5
for循环执行完后执行esle下的语句块;如果for循环中途退出,则不执行else下的语句块,示例如下:
>>> s = [1, 2, 3, 4, 5]
>>> for item in s:
... print(item)
>>> else: # for循环正常运行完后会执行else下的语句块
... print('for循环执行完毕')
1
2
3
4
5
for循环执行完毕
>>> s = [1, 2, 3, 4, 5]
>>> for item in s:
... if item < 3:
... print(item)
... else:
... break
>>> else: # for循环被break语句断开,没有运行完,不执行else下的语句块
... print('for循环执行完毕')
1
2
range()函数
range()函数可以生成一个数列,语法如下:
range(start, stop[, step])
参数:
- start: 开始值。默认值是0,可以省略;
- stop: 结束值,不包括 结束值;
- step:步长,默认为1。
返回值:range对象
range()函数的返回值是一个数列,开始值能够取到,结束值取不到,是一个左闭右开的区间,这个数列是一个可迭代对象,能够使用for循环遍历其中的值,也可以使用list()函数将其转换为一个列表,示例如下:
>>> print(range(1, 5)) # 生成开始值是1,结束值是4,步长为1的数列,左闭右开的区间
range(1, 5) # range对象
>>> for i in range(1, 5): # 使用for循环遍历range对象的值
... print(i)
1
2
3
4
# 使用list()函数将range对象转换成列表输出
>>> s = list(range(5)) # range(5)等同于range(0, 5),开始值默认为0,步长默认为1
>>> print(s)
[0, 1, 2, 3, 4]
for循环的常用范围
for循环能够对可迭代对象进行循环遍历,可在for循环中用多个变量来迭代序列对象,例如使用dict.items()方法返回的元组可以用两个变量来接收元组中的元素,示例如下:
>>> d1 = {'name':'lilei', 'age':20, 'grade':'three'}
>>> for k, v in d1.items(): # 使用变量k, v接收元组中的元素
... print(k, v)
name lilei
age 20
grade three
>>> for (a, b) in [(1,2),(3,4),(5,6),(7,8)]:
... print(a, b)
1 2
3 4
5 6
7 8
for循环的嵌套
for循环可以嵌套使用,即在for循环内部可以使用for循环,双层或者更多层都是被支持的,示例如下:
例:打印九九乘法表
>>> for i in range(1, 10):
... for j in range(1, i + 1):
... print('%s * %s = %s' % (i, j, i * j), end=' ')
... print()
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
外层for循环中变量i分别被赋值为:1,2,3,4,5,6,7,8,9。当i=1时,内层for循环j可以被赋值为:1。此时i=1,j=1,然后执行打印’1 * 1 = 1’,print函数不换行,内层循环执行完成;执行print()进行换行。外层循环进入下一层,当i=2时,内层循环j可以被赋值为:1,2。内层循环第一次循环时:i=2,j=1,打印’2 * 1 = 2’,print函数不换行,内层循环进行第二次循环:i=2,j=2,打印’2 * 2 = 4’,内层循环结束,执行print()进行换行。外层循环进入下一层,i = 3…
依次类推,外层循环循环一层,内层循环循环一圈,内层循环结束循环后,外层循环才能进入下一层。
for循环和if条件语句也可以嵌套,示例如下:
计算1~100之间能被3整除的数的和
>>> s = 0
>>> for i in range(1, 101):
... if i % 3 == 0: # 满足if条件的执行求和
... s += i
>>> print(s)
1683