python列表过滤的方法

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

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

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

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

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)

代码中的:

[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函数进行,完整的代码如下

# -*- 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)

运行结果如下:

    

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

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值