zoukankan      html  css  js  c++  java
  • Python 基础(二)

    迭代

    一个for语句就能实现简单的迭代,但是对于一些复杂的迭代,一此函数非常有用。

    1.并行迭代

      程序可以同时迭代两个序列,比如有下面两个列表:

    names = ['king','ken','jack']
    ages = [18,20,22]
    

      如果想打印名字和对应的年龄,可以像下面这样做:

    for x in names:
        for y in ages:
            if names.index(x) == ages.index(y):
                print('%s is %s years old'%(x,y))
    >>>king is 18 years old
        ken is 20 years old
        jack is 22 years old
    

      也可以这样:

    for i in range(len(names)):
        print('%s is %s years old' %(names[i],ages[i]))
    

      而内建的zip函数也可以用来并行迭代,它会将两个序列压缩在一起,返回一个元组的列表,然后我们可以循环中解包元组,而且zip可以用于不等长的序列,当最短序列用完时,循环就停止。

    for name,age in zip(names,ages):
        print('%s is %s years old' %(name,age))
    

    2.编号迭代

      有时候相要迭代序列中的对象,同时又要获得当前对象的索引,可以用内建函数 enumerate.

    li = ['a','b','c','d']
    for x,y in enumerate(li):
        print(x,y)
    >>>0 a
        1 b
        2 c
        3 d
    

    Python内建函数

    1. abs(x)

    abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。例如:

    >>> abs(-10)
    10
    

    2. chr(i)

    chr()函数返回与ASCII码i相匹配的一个单一字符串,如下例所示:

    >>> print (chr(72)+chr(101)+chr(108)*2+chr(111))
    Hello
    

    3. input([prompt])

    input()函数提供用户输入。

    >>> name = input('input your name:')
    input your name:yang

    4. list(sequence)

    list()函数返回以列表。该列表的项及顺序与sequence参数的项及顺序相同,如下例所示:

    >>> str = 'abcdefg'
    >>> list(str)
    ['a', 'b', 'c', 'd', 'e', 'f', 'g']

    5. min(s)

    当仅给定一个参数时,min()函数返回序列s的最小值。如:

    >>> li = [1,2,3,4,5,6,7]
    >>> min(li)
    1

    6.ord(c)

    该函数返回由一个字符c组成的字符串的ASCII码值或Unicode数字码。ord()函数是chr()函数的反函数

    >>> ord('a')
    97          #97是a在ASCII表中的数字码
    

    7.chr(s)

    该函数返回由一个ASCII码值对应的数字或字符。

    >>> chr(98)
    'b'
    

      利用此特性,我们可以生成随机验证码:

    import  random
    li = []
    for i in range(6):
        x = random.randrange(0,5)
        if x == 2:
            y = random.randrange(0,9)
            y =str(y)
            li.append(y)
        else:
            z = random.randrange(65,91)
            z = chr(z)
            li.append(z)
    xyz = ''.join(li)
    print(xyz)
    >>>QZ23BZ
    

    8. range(x,y)

    如果你需要一个数值序列,使用内建函数range() 会很方便

    print(list(range(0,10)))
    >>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

     当然,可以让range() 的起始值定为某一个数,也可以指定一个不同的步长:

    print(list(range(0,10,2)))
    >>>[0, 2, 4, 6, 8]
    print(list(range(4,10,2)))
    >>>[4, 6, 8]
    

    装饰器

    装饰器其实也就是一个函数,一个用来包装函数的函数,装饰器在函数声明完成的时候被调用,调用之后声明的函数被换成一个被装饰器装饰过后的函数。

    装饰器的语法以@开头,接着是装饰器函数的名字、可选参数。紧跟装饰器声明的是被装饰的函数和被装饰的函数的可选参数。

    def outer(f):
        def inter():
            print('this is before')
            f()
            print('this is after')
        return inter
    @outer
    def f1():
        print('F1')
    #等价于
    def outer(f):
        def inter():
            print('this is before')
            f()
            print('this is after')
        return inter
    
    def f1():
        print('F1')
    f1 = outer(f1)
    

    被装饰对象有参数:

    def outer(f):
        def inter(x,y):
            print('this is before')
            f(x,y)
            print('this is after')
        return inter
    
    
    @outer
    def f1(x,y):
        print(x)
        print(y)
    f1('a','b')
    

      

  • 相关阅读:
    【 POJ
    C语言常用数学函数及其用法
    【HDU3065】 病毒侵袭持续中(AC自动机)
    windows版本cloudbase-init流程说明
    Metadata 的概念
    DataSource的设置
    cloud-utils
    cloud-init代码调试方法
    cloud-init简介及组件说明
    使用dib element proliant-tools制作deploy image
  • 原文地址:https://www.cnblogs.com/postgres/p/5549698.html
Copyright © 2011-2022 走看看