前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python列表过滤的方法

python列表过滤的方法

作者头像
py3study
发布2020-01-13 12:36:21
1.7K0
发布2020-01-13 12:36:21
举报
文章被收录于专栏:python3

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

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

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

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

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

代码中的:

代码语言:javascript
复制
[element for element in li if not isinstance(element,int) and len(element)>5]

这部分就是过滤了

单独拆分:

1、

代码语言:javascript
复制
element 

2、

代码语言:javascript
复制
for element in li

3、

代码语言:javascript
复制
if not isinstance(element,int) and len(element)>5

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

返回结果如下:

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

代码语言:javascript
复制
# -*- coding:utf-8 -*-
# 列表过滤和使用lambda函数过滤
if __name__ == "__main__":
    info = """>>>>>用来演示普通方式过滤列表和使用lambda函数过滤<<<<<"""
    print info
# 使用普通列表过滤
def filterForLi(li):
    info = ">>>>>使用普通过滤列表<<<<<"
    print info
    out_data = [element for element in li if not isinstance(element,int) and len(element)>5] #int类型没有长度,所以需要首先排除
    print out_data
# 使用lambda函数过滤
def filterByLambda(li):
    info = ">>>>>使用lambda函数进行列表信息过滤<<<<<"
    print info
    # 定义一个lambda函数:int类型没有长度,所以需要首先排除
    g = lambda x : not isinstance(x,int) and len(x)>5
    out_data = [element for element in li if g(element)]
    print out_data
# 定义一个列表
li = [1,2,3,4,5,"a","b","c","apple","banana","orange","juice"]
# 分别调用两个函数:结果应该一样才准确
# 普通过滤
filterForLi(li)
# lambda函数过滤
filterByLambda(li)

运行结果如下:

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档