美文网首页python
python 数据结构 list(3)

python 数据结构 list(3)

作者: hiekay | 来源:发表于2018-10-22 16:32 被阅读2次

    list解析

    先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来

    >>> power2 = []
    >>> for i in range(1,10):
    ...     power2.append(i*i)
    ...
    >>> power2
    [1, 4, 9, 16, 25, 36, 49, 64, 81]
    
    

    python有一个非常有意思的功能,就是list解析,就是这样的:

    >>> squares = [x**2 for x in range(1,10)]
    >>> squares
    [1, 4, 9, 16, 25, 36, 49, 64, 81]
    
    
    • 找出100以内的能够被3整除的正整数。

    我们用的方法是:

    aliquot = []
    
    for n in range(1,100):
        if n%3 == 0:
            aliquot.append(n)
    
    print aliquot
    
    

    用list解析重写,会是这样的:

    >>> aliquot = [n for n in range(1,100) if n%3==0]
    >>> aliquot
    [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
    
    

    另一个:

    >>> print range(3,100,3)
    [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
    
    

    其实,不仅仅对数字组成的list,所有的都可以如此操作。

    >>> mybag = [' glass',' apple','green leaf ']   #有的前面有空格,有的后面有空格
    >>> [one.strip() for one in mybag]              #去掉元素前后的空格
    ['glass', 'apple', 'green leaf']
    
    

    enumerate

    这是一个有意思的内置函数,本来我们可以通过for i in range(len(list))的方式得到一个list的每个元素编号,然后在用list[i]的方式得到该元素。如果要同时得到元素编号和元素怎么办?就是这样了:

    >>> for i in range(len(week)):
    ...     print week[i]+' is '+str(i)     #注意,i是int类型,如果和前面的用+连接,必须是str类型
    ...
    monday is 0
    sunday is 1
    friday is 2
    
    

    python中提供了一个内置函数enumerate,能够实现类似的功能

    >>> for (i,day) in enumerate(week):
    ...     print day+' is '+str(i)
    ...
    monday is 0
    sunday is 1
    friday is 2
    
    

    实验:

    >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    >>> list(enumerate(seasons))
    [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    >>> list(enumerate(seasons, start=1))
    [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
    
    

    在这里有类似(0,'Spring')这样的东西,这是另外一种数据类型,待后面详解。

    下面将enumerate函数和list解析联合起来,同时显示,在进行list解析的时候,也可以包含进函数

    >>> def treatment(pos, element):
    ...     return "%d: %s"%(pos,element)
    ...
    >>> seq = ["hiekay","hiekay.github.io","python"]
    >>> [ treatment(i, ele) for i,ele in enumerate(seq) ]
    ['0: hiekay', '1: hiekay.github.io', '2: python']
    
    

    函数lambda:

    例如:

    g = lambda x:x+1
    

    ambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:

     def g(x):
         return x+1
    
    >>> seq = ["hiekay","hiekay.github.io","python"]
    >>> foo = lambda i,ele:"%d:%s"%(i,ele)          #lambda函数,给代码带来了简介
    >>> [foo(i,ele) for i,ele in enumerate(seq)]
    ['0:hiekay', '1:hiekay.github.io', '2:python']
    

    相关文章

      网友评论

        本文标题:python 数据结构 list(3)

        本文链接:https://www.haomeiwen.com/subject/yemgzftx.html