Python入门教程:深入理解循环语句(for循环)

一、for 循环简介

循环就是重复做某件事,for循环是python提供第二种循环机制(第一种是while循环),理论上for循环能做的事情,while循环都可以做。

for 的语句格式如下:

for  <变量>   in   <循环序列>:

        【循环体】

注:通过 for 循环依次将 <循环序列> 中的数据取出赋值给 <变量>,再通过【循环体】进行处理。

例1:for 循环访问列表

# for 循环访问列表

代码:

list = ['张三', '李四', '王五']
for i in list:
    print(i)

输出结果:

张三
李四
王五

注意: i这个变量是在 for 循环中定义的,意思是,依次取出 list 中的每一个元素,并把元素赋值给i,然后执行for循环体。

例2: for 循环访问字典

代码:

dict = {'张三': 98, '李四': 89, '王五': 56}
for key, value in dict.items():
    print(key, value)

输出结果:

张三 98
李四 89
王五 56

例3: for 循环访问字符串

# for 循环访问字符串,可以依次读取每个字符

代码:

for each in 'Trkczx':
    print(each)

输出结果:

'T'
'r'
'k'
'c'
'z'
'x'

二、for … else … (比较少用到)

for … else … 格式:

for  <变量>   in   <循环序列>:

        【循环体】

else:

         【else的语句块】

注:for 遍历序列,无 break 结束当前循环,循环结束后执行 else 语句块

例1:

list = ['张三', '李四', '王五']
for i in list:
    print(i)
else:
    print('循环完整结束后执行')

输出结果:

张三
李四
王五
循环完整结束后执行

例2:

list = ['张三', '李四', '王五']
for i in list:
    print(i)
    if i == '李四':
        break  # break 结束循环,for 下的 else 也不会执行
else:
    print('循环完整结束后执行')

输出结果:

张三
李四

例3:

list = ['张三', '李四', '王五']
for i in list:
    if  == '李四':
        continue  # continue 跳过本次循环,进入下一次循环
    print(i)  # 如果被 continue 本条语句不会执行
else:
    print('循环完整结束后执行')

输出结果:

张三
王五
循环完整结束后执行

注:continue 只是跳过本次循环,循环结束后 else 语句块最后被执行

三、for 循环嵌套

循环嵌套为循环中嵌套另外一层循环。

for <外层循环变量> in <外层循环序列>:

     for <内层循环变量> in <内层循环序列>:

         【内层循环体】

     【外层循环体】

这个只是一个for 与 for 的循环嵌套,当然也可以使用 for 与 while 嵌套。

循环嵌套经典

例1:倒三角的九九乘法表

# 九九乘法表

运行代码:

for i in range(1, 10):
    for j in range(i, 10):
        print('%d * %d = %d' % (i, j, i * j), end='\t')
print('')  # 控制换行

运行结果:

1 * 1 = 1	1 * 2 = 2	1 * 3 = 3	1 * 4 = 4	1 * 5 = 5	1 * 6 = 6	1 * 7 = 7	1 * 8 = 8	1 * 9 = 9	
2 * 2 = 4	2 * 3 = 6	2 * 4 = 8	2 * 5 = 10	2 * 6 = 12	2 * 7 = 14	2 * 8 = 16	2 * 9 = 18	
3 * 3 = 9	3 * 4 = 12	3 * 5 = 15	3 * 6 = 18	3 * 7 = 21	3 * 8 = 24	3 * 9 = 27	
4 * 4 = 16	4 * 5 = 20	4 * 6 = 24	4 * 7 = 28	4 * 8 = 32	4 * 9 = 36	
5 * 5 = 25	5 * 6 = 30	5 * 7 = 35	5 * 8 = 40	5 * 9 = 45	
6 * 6 = 36	6 * 7 = 42	6 * 8 = 48	6 * 9 = 54	
7 * 7 = 49	7 * 8 = 56	7 * 9 = 63	
8 * 8 = 64	8 * 9 = 72	
9 * 9 = 81

例2:冒泡排序

# 冒泡排序

(1)定义

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

(2)运行代码:

list = [9, 2, 7, 4, 5, 6, 3, 8, 1, 10]
n=0
for i in range(len(list)-1):
    for j in range(len(list)-i-1):
        if list[j] < list[j+1]:
            list[j],list[j+1]=list[j+1],list[j]
    n+=1
print(list)

(3)运行结果:

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

(4)代码解释

以下是代码的详细含义:

  1.  list是一个包含需要排序的数字的列表。

  2. n被初始化为0,但在这段代码中没有用于任何有意义的目的。

  3. 外部循环使用变量i,它在范围从0到列表的长度减1之间迭代。这控制了需要多少次遍历整个列表。

  4. 内部循环使用变量j,它在范围从0到列表的长度减去当前的i之间迭代。这是因为,在每次遍历后,最大的元素“冒泡到”列表的末尾,因此在后续的遍历中无需再考虑它。

  5. 在内部循环中,你将 list[j] 与 list[j+1] 进行比较。如果 list[j] 比 list[j+1] 小,就交换它们的位置。这个过程一直持续,直到最大的元素移动到列表的末尾。

  6. 在每次遍历列表后,最大的未排序元素会移动到末尾。这意味着最大的元素已经处于正确的位置。

  7. 当所有遍历都完成后,列表将按降序排列,然后使用 print(list) 将其打印出来。

四、for循环访问迭代对象

迭代器有两个基本的方法:iter() 和 next()

iter() 创建一个迭代器

next() 访问迭代元素,访问后指针向下移一行

示例:

>>>list=[0,1,2,3,4]
>>> it = iter(list)  # 创建迭代对象
>>> print (next(it))  # 访问当前指针元素,结束后指针向下移一步
0
>>> print (next(it)) 
1
>>>

2、for循环访问迭代器

示例:

代码:

list = ['张三', '李四', '王五']
a= iter(list)  # 创建迭代器对象
for each in a:  # 循环访问迭代器
    print(each)

运行结果:

张三
李四
王五

注意:迭代器访问数据比通过索引循环访问速度更快,数据量大时一般会使用迭代器

五、range ( ) 类控制循环访问

range ( ) 为 Python 的自有类,range() 带有内置的迭代方法__iter__() 和 __next()__ ,它是一个可迭代对象,我们可以通过 for 访问 range() 创建的迭代器。

注:__iter__() 和 __next()__ 左右均为两个_下横线

range 类初始化参数说明:

range(stop) 从0开始到stop结束(不包含 stop)返回一个产生整数序列的迭代对象。

range(start, stop[, step]) 从 start 开始到 stop 结束(不包含 stop)返回一个整数序列的迭代对象, step 为他的步长。

例1:

代码:

for i in range(5):

    print(i)

输出:

0

1

2

3

4

例2 :

代码:

for i in range(1,5):

    print(i)

运行结果:

1

2

3

4

示例3:

代码:

for i in range(1,5,2):

    print(i)

运行结果:

1

3

例4:

代码:

for i in range(-1,-5,-2):

    print(i)

运行结果:

-1

-3

注意:start, stop, step 三个参数可以为负数

例5:

# 结合range()和len()函数以遍历一个序列的索引。

代码:

list = ['张三', '李四', '王五']

for i in range(len(list)):

    print(list[i])

运行结果:

张三

李四

王五

注:for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict 等,任何可迭代对象都可以作用于 for 循环,而内部如何迭代我们通常并不用关心。

通常可迭代对象一般具备 iter() 和 next() 方法或者 __iter__() 和 __next()__ 方法。

物联沃分享整理
物联沃-IOTWORD物联网 » Python入门教程:深入理解循环语句(for循环)

发表评论