当前位置:   article > 正文

python列表过滤的方法_python list 过滤

python list 过滤

在python中,对列表这样的数据结构进行过滤,提取自己需要的元素,组成新的列表,是很常见的操作,这就要自然而然的用到列表过滤了,而常用的过滤当然就是循环后通过if进行,但是这样子,显然就是代码的开支有些大。

python中,提供了一个列表过滤的方式来做到这样的方式

    [ mapping-expression for  element in  source-list if  filter-expression ]

直接来一段示例,就能很快明了:

  1. def filterForLi(li):
  2. info = ">>>>>使用普通过滤列表<<<<<"
  3. print info
  4. out_data = [element for element in li if not isinstance(element,int) and len(element)>5] #int类型没有长度,所以需要首先排除
  5. print out_data
  6. # 定义一个列表
  7. li = [1,2,3,4,5,"a","b","c","apple","banana","orange","juice"]
  8. filterForLi(li)

代码中的:

[element for element in li if not isinstance(element,int) and len(element)>5]

这部分就是过滤了

单独拆分:

1、

element 

2、

 

for element in li

3、

 

if not isinstance(element,int) and len(element)>5

这样子看,就应该是很好懂了,就是for循环中,通过if对元素内容进行过滤处理,然后返回满足条件的元素,最终组装成新的列表

返回结果如下:

    

另外一种会用到的过滤,就是通过lambda函数进行,其实和这段列表过滤的原理一样,只是将if判断的部分通过lambda函数进行,完整的代码如下

  1. # -*- coding:utf-8 -*-
  2. # 列表过滤和使用lambda函数过滤
  3. if __name__ == "__main__":
  4. info = """>>>>>用来演示普通方式过滤列表和使用lambda函数过滤<<<<<"""
  5. print info
  6. # 使用普通列表过滤
  7. def filterForLi(li):
  8. info = ">>>>>使用普通过滤列表<<<<<"
  9. print info
  10. out_data = [element for element in li if not isinstance(element,int) and len(element)>5] #int类型没有长度,所以需要首先排除
  11. print out_data
  12. # 使用lambda函数过滤
  13. def filterByLambda(li):
  14. info = ">>>>>使用lambda函数进行列表信息过滤<<<<<"
  15. print info
  16. # 定义一个lambda函数:int类型没有长度,所以需要首先排除
  17. g = lambda x : not isinstance(x,int) and len(x)>5
  18. out_data = [element for element in li if g(element)]
  19. print out_data
  20. # 定义一个列表
  21. li = [1,2,3,4,5,"a","b","c","apple","banana","orange","juice"]
  22. # 分别调用两个函数:结果应该一样才准确
  23. # 普通过滤
  24. filterForLi(li)
  25. # lambda函数过滤
  26. filterByLambda(li)

运行结果如下:

    

以上这些就是常用到的一些进行列表元素过滤的方法了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/208309
推荐阅读
相关标签
  

闽ICP备14008679号