zoukankan      html  css  js  c++  java
  • python循环

    循环的作用在于将一段代码重复执行多次。

    while 循环

    while <condition>:
        <statesments>
    

    Python会循环执行<statesments>,直到<condition>不满足为止。

    例如,计算数字01000000的和:

    i = 0
    total = 0
    while i < 1000000:
        total += i
        i += 1
    print total
    
    499999500000
    

    之前提到,空容器会被当成 False ,因此可以用 while 循环来读取容器中的所有元素:

    plays = set(['Hamlet', 'Macbeth', 'King Lear'])
    while plays:
        play = plays.pop()
        print 'Perform', play
    
    Perform King Lear
    Perform Macbeth
    Perform Hamlet
    

    循环每次从 plays 中弹出一个元素,一直到 plays 为空为止。

    推荐下我自己创建的Python学习交流群923414804,这是Python学习交流的地方,不管你是小白还是大牛,都欢迎,不定期分享干货,包括我整理的一份适合零基础学习Python的资料和入门教程。
    

    for 循环

    for <variable> in <sequence>:
        <indented block of code>
    

    for 循环会遍历完<sequence>中所有元素为止

    上一个例子可以改写成如下形式:

    plays = set(['Hamlet', 'Macbeth', 'King Lear'])
    for play in plays:
        print 'Perform', play
    
    Perform King Lear
    Perform Macbeth
    Perform Hamlet
    

    使用 for 循环时,注意尽量不要改变 plays 的值,否则可能会产生意想不到的结果。

    之前的求和也可以通过 for 循环来实现:

    total = 0
    for i in range(100000):
        total += i
    print total
    
    4999950000
    

    然而这种写法有一个缺点:在循环前,它会生成一个长度为 100000 的临时列表。

    生成列表的问题在于,会有一定的时间和内存消耗,当数字从 100000 变得更大时,时间和内存的消耗会更加明显。

    为了解决这个问题,我们可以使用 xrange 来代替 range 函数,其效果与range函数相同,但是 xrange 并不会一次性的产生所有的数据:

    total = 0
    for i in xrange(100000):
        total += i
    print total
    
    4999950000
    

    比较一下两者的运行时间:

    %timeit for i in xrange(1000000): i = i
    
    10 loops, best of 3: 40.7 ms per loop
    
    %timeit for i in range(1000000): i = i
    
    10 loops, best of 3: 96.6 ms per loop
    

    可以看出,xrange 用时要比 range 少。

    continue 语句

    遇到 continue 的时候,程序会返回到循环的最开始重新执行。

    例如在循环中忽略一些特定的值:

    values = [7, 6, 4, 7, 19, 2, 1]
    for i in values:
        if i % 2 != 0:
            # 忽略奇数
            continue
        print i/2
    
    3
    2
    1
    

    break 语句

    遇到 break 的时候,程序会跳出循环,不管循环条件是不是满足:

    command_list = ['start', 
                    'process', 
                    'process',
                    'process', 
                    'stop', 
                    'start', 
                    'process', 
                    'stop']
    while command_list:
        command = command_list.pop(0)
        if command == 'stop':
            break
        print(command)
    
    start
    process
    process
    process
    

    在遇到第一个 'stop' 之后,程序跳出循环。

    else语句

    if 一样, whilefor 循环后面也可以跟着 else 语句,不过要和break一起连用。

    • 当循环正常结束时,循环条件不满足, else 被执行;
    • 当循环被 break 结束时,循环条件仍然满足, else 不执行。

    不执行:

    values = [7, 6, 4, 7, 19, 2, 1]
    for x in values:
        if x <= 10:
            print 'Found:', x
            break
    else:
        print 'All values greater than 10'
    
    Found: 7
    

    执行:

    values = [11, 12, 13, 100]
    for x in values:
        if x <= 10:
            print 'Found:', x
            break
    else:
        print 'All values greater than 10'
    
    All values greater than 10
  • 相关阅读:
    ES6变量的解构赋值、字符串的新增方法
    JavaScript的基础语法及DOM元素和事件
    ES 新特性、异步、TypeScript
    JS实现PC端URL跳转到对应移动端URL
    jquery版本过低安全漏洞问题
    重磅!华为云社区·CSDN【寻找黑马程序员】有奖征文活动奖项公布!!
    车标知识学习网页开发,与Flask通过base64展示二进制图片 #华为云·寻找黑马程序员#
    大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#
    大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#
    【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署
  • 原文地址:https://www.cnblogs.com/paisenpython/p/10266498.html
Copyright © 2011-2022 走看看