zoukankan      html  css  js  c++  java
  • 🍖流程控制之for循环

    引入

    1.什么是for循环

    • 就是重复的做某事
    • 它是Python提供的第二种循环机制

    2.为什么要有for循环

    • 理论上for能做的事情,while循环都可以做
    • 之所以使用for循环是因为在特定的时候for循环更简洁, 比如:循环取值

    3.如何使用for循环

    • 伪代码示例
    可迭代对象目前理解为包含多个值的类型
    运行原理:从可迭代对象中取出一个值给变量名,执行下面代码,然后又取出第二的值...直到值取完
    for [变量名] in [可迭代对象]:
        代码1
        代码2
        代码3
    

    4.如何终止for循环

    • 值所包含的元素取干净
    • 遇到 break 立即终止本层循环

    一.for循环循环取值

    1.字符串循环取值

    • 取的是大字符串里的单个字符, 包括空格
    strr = "shawn is man"
    for i in strr:
        print(i)
    

    2.列表循环取值

    • 默认取出的是第一层的值
    li = [111,222,333,444]
    for i in li:
        print(i)
    

    3.字典循环取值

    • 默认取出的是字典的 key
    dic = {"name":"shawn","age":22}
    for i in dic:
        print(i,dic[i])  # name shawn   age 22  
    

    二.for 与 break 组合使用

    • break : 立刻终止本层循环

    三.for 与 else 组合使用

    • 只有在循环正常执行完毕,且没有被break打断的情况下else中的子代码块才会生效

    四.for 与 continue 组合使用

    • 跳过当前循环进行下一次循环
    for i in range(5):
        if i == 3:
            continue
        print(i)  # 0, 1, 2, 4
    

    五.range 功能与 for 组合使用

    1.for循环取值的局限性

    • 使用一些数据类型来控制循环的次数, 当循环次数多时, 比如以前一万次, 难道还要在数据类型里面包含一千一万个值吗--(相当于鸡蛋)
    • 这显然是不方便的, 于是 range 就很好的解决了这个问题--(相当于老母鸡)

    2.range 的作用

    • for循环并不一定是要做循环取值, 也有可能是单纯的执行循环次数, range 就是用来做这件事的

    3.range 的用法

    指定结尾,默认从"0"开始,到"4"结束,顾头不顾尾
    for i in range(5)
    	print(i)  #0,1,2,3,4 
    	
    指定开头和结尾,顾头不顾尾"1~4"
    for i in range(1,5)
    	print(i)  #1,2,3,4
    	
    指定开头结尾和步长,顾头不顾尾
    for i in range(1,8,2)
    	print(i)  #1,3,5,7 (也就是每两个取第一个)
    

    六.for 与 range 与 len 组合使用

    • len 可以统计长度, 我们可以配合 range, 循环出索引,然后通过索引取值
    l = [111,222,333,444,555]
    for i in range(len(l)):
        print(f"{i}:{l[i]}"
    # 0:111
    # 1:222
    # 2:333
    # 3:444
    # 4:555
    

    七.for 循环嵌套

    1.嵌套循环的逻辑思路

    • 外层循环一次, 里层循环完毕, 然后再进行外层的第二次循环, 里层又开始循环, 以此往复, 直到外层和里层都循环完毕

    2.伪代码示例

    for [外层变量名] in [外层循环条件/次数(假设3)]:
    	print("我是外层循环输出")
    	for [里层变量名] in [里层循环条件/次数(假设4)]:
    		print("我是里层循环输出")
    
    以上伪代码示例,外层"3"次循环,里层"4"次循环
    外层循环"1"次,里层循环"4"次,循环完进行外层的第二次循环
    最终外层循环完"3"次,那么里层就一共循环了"12"次
    

    3.金字塔示例

    count = 5
    for maxdepth in range(1, count + 1):
        for space in range(count - maxdepth):
            print(' ', end='')
        for start in range(1, maxdepth * 2):
            print("*", end="")
        print()
    #     *
    #    ***
    #   *****
    #  *******
    # *********    
    

    4.九九乘法表示例

    for maxdepth in range(1,10):
        for now in range(1,maxdepth+1):
            print(f"{now}*{maxdepth}={now*maxdepth} ",end="")
        print()
    # 1*1=1 
    # 1*2=2 2*2=4 
    # 1*3=3 2*3=6 3*3=9 
    # 1*4=4 2*4=8 3*4=12 4*4=16 
    # 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
    # 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
    # 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
    # 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
    # 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 
    

    八.for 循环与 while 循环的区别

    1.相同之处

    • 都是循环, 循环做的事情两种方式都可以做, 主要看应用场景, 看哪个使用的更方便

    2.不同之处

    • while 循环称之为条件循环, 循环的次数取决于条件何时变为假
    • for 循环称之为遍历循环(取值循环等等), 循环的次数取决于 in 后面包含的值的个数

    九.总结

    • for + 可迭代对象 : 实现遍历取值
    • for + range : 实现控制循环次数
    • for + range + len : 实现按索引取值
  • 相关阅读:
    Space for commit to queue couldn't be acquired
    数据埋点(浅谈埋点方式与上报收集)
    Hashed Indexes Geospatial Index
    线程安全 对StringBuilder抛出ArrayIndexOutOfBoundsException的探究
    [a,s]=[22,3]
    Flume-ng-sdk源码分析
    pstree
    将线上服务器生成的日志信息实时导入kafka,采用agent和collector分层传输,app的数据通过thrift传给agent,agent通过avro sink将数据发给collector,collector将数据汇集后,发送给kafka
    线程池 最大线程数
    es 300G 数据删除 执行计划 curl REST 操作
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14015657.html
Copyright © 2011-2022 走看看