iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python列表过滤的方法
  • 430
分享到

python列表过滤的方法

方法列表python 2023-01-31 01:01:40 430人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

运行结果如下:

    

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

--结束END--

本文标题: python列表过滤的方法

本文链接: https://www.lsjlt.com/news/184774.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作