美文网首页
Python中for...[if]...构建List (List

Python中for...[if]...构建List (List

作者: catHeart | 来源:发表于2015-05-25 17:00 被阅读3563次

    简单的for...[if]...语句

    Python中,for...[if]...语句一种简洁的构建List的方法,从for给定的List中选择出满足if条件的元素组成新的List,其中if是可以省略的。下面举几个简单的例子进行说明。

    >>> a=[12, 3, 4, 6, 7, 13, 21]
    >>> newList = [x for x in a]
    >>> newList
    [12, 3, 4, 6, 7, 13, 21]
    >>> newList2 = [x for x in a if x%2==0]
    >>> newList2
    [12, 4, 6]
    

    省略if后,newList构建了一个与a具有相同元素的List。但是,newList和a是不同的List。执行b=a,b和newList是不同的。newList2是从a中选取满足x%2==0的元素组成的List。如果不使用for...[if]..语句,构建newList2需要下面的操作。

    >>> newList2=[]
    >>> for x in a:
    ...    if x %2 == 0:
    ...        newList2.append(x)
    >>> newList2
    [12, 4, 6]
    

    显然,使用for...[if]...语句更简洁一些。

    嵌套的for...[if]...语句

    嵌套的for...[if]...语句可以从多个List中选择满足if条件的元素组成新的List。下面也举几个例子。

    >>>a=[12, 3, 4, 6, 7, 13, 21]
    >>>b=['a', 'b', 'x']
    >>>newList=[(x, y) for x in a for y in b]
    >>>newList
    [(12, 'a'), (12, 'b'), (12, 'x'), (3, 'a'), (3, 'b'), (3, 'x'), (4, 'a'), (4, 'b'), (4, 'x'), (6, 'a'), (6, 'b'), (6, 'x'), (7, 'a'), (7, 'b'), (7, 'x'), (13, 'a'), (13, 'b'), (13, 'x'), (21, 'a'), (21, 'b'), (21, 'x')]
    >>>newList2=[(x, y) for x in a for y in b if x%2==0 and y<'x']
    >>>newList2
    [(12, 'a'), (12, 'b'), (4, 'a'), (4, 'b'), (6, 'a'), (6, 'b')]
    

    嵌套的for...[if]...语句与多重for语句相当,最前面的for语句是最外层的循环。

    参考文献

    PEP 202

    相关文章

      网友评论

          本文标题:Python中for...[if]...构建List (List

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