美文网首页Py100Skills
[Py029] 小话list过滤

[Py029] 小话list过滤

作者: 安哥生个信 | 来源:发表于2019-02-19 12:43 被阅读27次

    假设现在有一个list,[0,1,2,3,4,5,6],现在需要过滤出偶数值

    list的过滤可以分为两种情况:

    1.仅知道筛选条件

    2.已知筛选结果

    根据函数过滤

    这个当然首选filter

    In[10]: list(filter(lambda x:x%2==0,[0,1,2,3,4,5,6])) 
    Out[10]: [0, 2, 4, 6]
    

    当然列表生成式也是可以的,但是我感觉写起来有些麻烦

    In[13]: [i for i in [0,1,2,3,4,5,6] if i%2==0]
    Out[13]: [0, 2, 4, 6]
    

    根据布尔值过滤

    [0,1,2,3,4,5,6]的对应的偶数布尔list为[True, False,True, False,True, False,True]

    那么可以通过下面的方式处理

    In[11]: from itertools import compress
    In[12]: list(compress([0,1,2,3,4,5,6],[True, False,True, False,True, False,True]))
    Out[12]: [0, 2, 4, 6]
    

    compress处理的对象长度可以不一样

    In[14]: list(compress([0,1,2,3,4],[True, False,True, False,True, False,True]))
    Out[14]: [0, 2, 4]
    In[15]: list(compress([0,1,2,3,4,5,6],[True, False,True, False,True]))
    Out[15]: [0, 2, 4]
    

    根据坐标过滤

    这个时候列表生成式是比较方便的选择

    In[26]: [['a','b','c','d','e'][i] for i in [2,4]]
    Out[26]: ['c', 'e']
    

    相关文章

      网友评论

        本文标题:[Py029] 小话list过滤

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