zoukankan      html  css  js  c++  java
  • python3之循环

    本节主要介绍python中循环语句的使用方法以及其它一些语句exec等,文章后面附有之前的文章。

    循环语句

    if是值运行一次而循环时在条件满足情况下能够运行相同语句多次;使用循环能够轻松实现序列。词典等的迭代;

    while循环:

    用来在不论什么条件为真的情况下反复运行一个代码快:

    while i>0:

    代码快
    

    其它代码。

    演演示样例如以下:

    
    >>>i=10
    
    >>> while i>0:
    
    ...     print("i=",i)
    
    ...     i-=1
    
    ... 
    
    i= 10
    
    i= 9
    
    i= 8
    
    i= 7
    
    i= 6
    
    i= 5
    
    i= 4
    
    i= 3
    
    i= 2
    
    i= 1
    
    >>> 
    

    for循环:

    一般while循环已经满足我们要求了,可是有些时候还得去选择for循环更加有效;比方要为一个集合(序列和其它可迭代对像)的每一个元素都运行一个代码快。这时候能够使用for语句;

    基本形式:

    for <迭代数> in <对象集合>:

    
    >>> name=("peace","rong","nick")
    
    >>> for i in name:
    
    ...     print(i)
    
    ... 
    
    peace
    
    rong
    
    nick
    
    >>> 
    

    一些迭代工具

    之前解说字典时有讲过字典的迭代。如今介绍一下经常使用的迭代工具。

    并行迭代

    程序能够同一时候迭代两个序列

    内建函数zip函数能够用来进行并行迭代,这里须要注意的是python2返回的是元祖列表。而python3中返回的是可迭代对象

    
    ##python2.7
    >>> num = zip((1, 2), (3, 4))
    >>> num
    [(1, 2), (3, 4)]
    #返回的是元祖列表;
    
    ##python3.4
    >>> num=zip((1,2),(3,4))
    >>> num
    <zip object at 0x7fc5b1e7ef08>
    >>> 
    #返回的是一个对象。而且支持一次遍历。

    假设须要又一次遍历得又一次赋值一次; #可是都支持例如以下的遍历: >>> for i,j in num: ... print(i,j) ... 1 3 2 4

    当然也能够按索引迭代:

    有些时候须要訪问序列中的对象,同一时候还想获取当前对象的索引,比如替换字符串能够使用以下的方法:

    
    >>> strings=["peace","rong","nick"]
    
    >>> index=0
    
    >>> for string in strings:
    
    ...     if "on" in string:
    
    ...         strings[index]="peace"
    
    ...     index+=1
    
    ... 
    
    >>> strings
    
    ['peace', 'peace', 'nick']
    
    >>> 
    

    跳出循环:

    1.break语句

    与其它自然语言c等没有区别;就是结束循环。

    2。

    continue语句:

    相同它仅仅是让当次迭代提前结束:

    演演示样例如以下:

    
    >>> num=[2,4,5,6,]
    
    >>> for i in num:
    
    ...     if i==5:
    
    ...         break
    
    ...     print (i)
    
    ... 
    
    2
    
    4
    
    >>> for i in num:
    
    ...     if i==5:
    
    ...         continue
    
    ...     print(i)
    
    ... 
    
    2
    
    4
    
    6
    
    >>> 
    

    循环中的else语句:

    else子句能够加在循环后,他仅在没有调用break语句时运行:还是刚在的样例:

    
    >>> num=[2,4,5,6]
    
    >>> for i in num:
    
    ...     if i==7:
    
    ...        break
    
    ... else:
    
    ...     print("not 7")
    
    ... 
    
    not 7
    
    #没有运行break打印7
    

    列表推导式

    列表推导式就是利用其它的列表创建新的列表。他的工作方式相似于for循环也非常easy;

    比如:创建由range(10)中每一个x的平方组成;

    
    >>> [x*x for x in range(10)]
    
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    相同也能够加条件:比方创建仅仅能被4整除的平方数:

    
    >>> [x*x for x in range(10) if x%4==0]
    
    [0, 16, 64]
    
    >>> 
    

    也能够添加很多其它的for:

    
    >>> [[x*x,y*y] for x in range(10) for y in range(10) if x%4==0 if y%3==0] 
    
    [[0, 0], [0, 9], [0, 36], [0, 81], [16, 0], [16, 9], [16, 36], [16, 81], [64, 0], [64, 9], [64, 36], [64, 81]]
    
    >>> 
    

    pass,del,exec介绍

    python3中pass

    pass语句就是什么都不做,让程序往下运行:比方能够让if,for,while,等块什么都不做时,我们能够加上pass

    
    >>> for i in range(10):
    
    ... 
    
      File "<stdin>", line 2
    
    
    
        ^
    
    IndentationError: expected an indented block
    
    >>> for i in range(10):
    
    ...     pass
    
    ... 
    
    >>>
    
    #从上能够看到不加pass就出错了。

    由于python时不同意空块存在的; >>> x=11 >>> if x>12: ... print("x>12") ... else: ... #等下在写 ... pass ... >>>

    python3中del

    del删除语句不仅会删除一个对象的引用,也会删除那个名字本省:演演示样例如以下

    
    >>> x=1
    
    >>> del x
    
    >>> x
    
    Traceback (most recent call last):
    
      File "<stdin>", line 1, in <module>
    
    NameError: name 'x' is not defined
    
    >>>
    
    #x这个名字已经不存在了 
    

    可是当两个引用指向同一个对象时。删掉的仅仅是引用名:

    
    #删掉y后x还是指向原来的对象;
    
    >>> x=[1,2]
    
    >>> y=x
    
    >>> y[1]=4
    
    >>> x
    
    [1, 4]
    
    >>> del y
    
    >>> x
    
    [1, 4]
    
    >>> 
    

    python3中exec和eval

    有些时候我们可能想要得到动态代码,然后将其作为语句运行或作为表达式计算。

    比如运行一个字符串的语句是exec

    
    >>>exec("print(1+3)")
    
    4
    

    当在字符串中定义变量时一定要小心;假设重名了就会发生不必要的错误;能够通过in来解决。起到了放置代码字符串命名空间的字典。

    比如:

    
    >>>from math import sin
    
    >>>scope={}
    
    >>>exec("sqrt=1") in scope
    
    >>>sqrt(4)
    
    2
    
    >>>scope['sqrt']
    
    1
    

    eval是相似于exec的内建函数。仅仅只是是eval会计算表达式,而且返回结果。相同能够使用命名空间。

    简单演演示样例如以下

    
    >>>eval(input("enter an expression:"))
    
    enter an expression:6+8*2
    
    42
    

    相关链接:

    python3入门之类
    python3入门之函数
    python3入门之循环
    python3之if语句
    python3入门之赋值语句介绍
    python3入门之print,import。input介绍
    python3入门之set
    python3入门之字典
    python3入门之字符串
    python3入门之列表和元组
    python3入门之软件安装
    python3爬虫之入门和正則表達式

  • 相关阅读:
    协方差矩阵
    SLAM中的关键帧是什么?有什么用?如何选择关键帧?
    EKF算法与非线性优化算法的比较
    LC217 存在重复元素
    LC42 接雨水
    LC20 有效的括号
    LC3 无重复最长子串
    LC4 寻找两个有序数组的中位数
    ubuntu16.04下安装g2o
    小米 各版本手机系统包 线刷包 卡刷包
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7058267.html
Copyright © 2011-2022 走看看