嵌套循环和if语句的嵌套原理相似,就是在一个循环体内嵌套另外一个循环体。不同的是循环嵌套可以采用for-for嵌套、for-while嵌套、while-for嵌套、以及while-while嵌套四种形式。
1. for-for嵌套
它的形式为:
1 2 3 4 | for i in range (n): for j in range (m): 循环体 2 循环体 1 |
举个例子:
我们定义两个列表(一种存储数据的容器)。
list_first = [1,2,3,4,5,6,7,8,9]
list_second = [2,4,8,10,12,20]
我们要找到两个列表中相同的数据并打印出来。
代码如下:
1 2 3 4 5 6 | list_first = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] list_second = [ 2 , 4 , 8 , 10 , 12 , 20 ] for i in list_first: for j in list_second: if i = = j: print (i) |
输出结果为:
1 2 3 | 2 4 8 |
2. for-while嵌套
它的形式为:
1 2 3 4 | for 变量 in 对象: while 条件: 循环体 2 循环体 1 |
举个例子:
index = [1,32,77,121,150]
遍历输出index列表中的值,对于小于100的数,把它每次加上10,直到大于100后再输出。
代码如下:
1 2 3 4 5 | index = [ 1 , 32 , 77 , 121 ] for i in index: #遍历index while i < 100 : #如果i小于100 i + = 10 #每次加上10 print (i) |
输出结果为:
1 2 3 4 | 101 102 107 121 |
3. while-while嵌套
结构如下:
1 2 3 4 | while 条件: while 条件: 循环体 2 循环体 1 |
具体就不再举例,大家可以去在试着使用这种结构去解决问题。
4. while-for嵌套
结构如下:
1 2 3 4 | while 条件: while 条件: 循环体 2 循环体 1 |
5. 九九乘法表(作业1570)
在循环嵌套里有一比较经典的例子——打印九九乘法表。通过这个实例可以更清晰的看到双层循环嵌套的结构。
我们先来看一下代码:
1 2 3 4 | for i in range ( 1 , 10 ): #先遍历1~9 for j in range ( 1 ,i + 1 ): #然后遍历1~i print (i, '*' ,j, '=' ,i * j,end = '丨' ) #循环输出1~i * i的值 print (end = '\n' ) |
再看一下输出结果:
1 2 3 4 5 6 7 8 9 | 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 丨 |
运行图:
原理:先进行第一层循环,依次为1~9。第二层循环是在第一层循环的基础上再进行依次遍历,假如第一层循环现在是5,那么第二层循环找到1~5,然后分别用1~5去乘上5,那么就完成一次循环。我们在第1层循环中打印一个换行,可以使得代码更加明了。