当前位置:   article > 正文

[Python入门]Python中的循环语句(for循环语句)_pythonfor循环语句

pythonfor循环语句

一、for 循环简介

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

for 的语句格式如下:

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

        【循环体】

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

例1:for 循环访问列表

# for 循环访问列表

代码:

  1. list = ['张三', '李四', '王五']
  2. forin list:
  3.     print(i)

输出结果:

  1. 张三
  2. 李四
  3. 王五

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

例2: for 循环访问字典

代码:

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

输出结果:

  1. 张三 98
  2. 李四 89
  3. 王五 56

例3: for 循环访问字符串

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

代码:

  1. for each in 'Trkczx':
  2.     print(each)

输出结果:

  1. 'T'
  2. 'r'
  3. 'k'
  4. 'c'
  5. 'z'
  6. 'x'

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

for ... else ... 格式:

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

        【循环体】

else:

         【else的语句块】

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

例1:

  1. list = ['张三', '李四', '王五']
  2. forin list:
  3.     print(i)
  4. else:
  5.     print('循环完整结束后执行')

输出结果:

  1. 张三
  2. 李四
  3. 王五
  4. 循环完整结束后执行

例2:

  1. list = ['张三', '李四', '王五']
  2. forin list:
  3.     print(i)
  4.     if i == '李四':
  5.         break  # break 结束循环,for 下的 else 也不会执行
  6. else:
  7.     print('循环完整结束后执行')

输出结果:

  1. 张三
  2. 李四

例3:

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

输出结果:

  1. 张三
  2. 王五
  3. 循环完整结束后执行

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

三、for 循环嵌套

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

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

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

         【内层循环体】

     【外层循环体】

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

循环嵌套经典

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

# 九九乘法表

运行代码:

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

运行结果:

  1. 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 * 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 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27
  4. 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36
  5. 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45
  6. 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54
  7. 7 * 7 = 49 7 * 8 = 56 7 * 9 = 63
  8. 8 * 8 = 64 8 * 9 = 72
  9. 9 * 9 = 81

例2:冒泡排序

# 冒泡排序

(1)定义

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

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

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

(2)运行代码:

  1. list = [9, 2, 7, 4, 5, 6, 3, 8, 1, 10]
  2. n=0
  3. for i in range(len(list)-1):
  4.     for j in range(len(list)-i-1):
  5.         if list[j] < list[j+1]:
  6.             list[j],list[j+1]=list[j+1],list[j]
  7.     n+=1
  8. 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() 访问迭代元素,访问后指针向下移一行

示例:

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

2、for循环访问迭代器

示例:

代码:

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

运行结果:

  1. 张三
  2. 李四
  3. 王五

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

五、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:

代码:

  1. for i in range(5):
  2.     print(i)

输出:

  1. 0
  2. 1
  3. 2
  4. 3
  5. 4

例2 :

代码:

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

运行结果:

  1. 1
  2. 2
  3. 3
  4. 4

示例3:

代码:

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

运行结果:

  1. 1
  2. 3

例4:

代码:

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

运行结果:

  1. -1
  2. -3

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

例5:

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

代码:

  1. list = ['张三', '李四', '王五']
  2. for i in range(len(list)):
  3.     print(list[i])

运行结果:

  1. 张三
  2. 李四
  3. 王五

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/436451
推荐阅读
相关标签
  

闽ICP备14008679号