Python 过滤函数filter()详解

一、过滤函数定义

         它用于对容器中的元素进行过滤处理。

二、 过滤函数语法

filter(function,iterable)

参数function:提供过滤条件的函数,返回布尔型

参数iterable: 容器类型数据

三、过滤函数的应用场景

    1、筛选符合条件的元素

     需求:在列表数据中 过滤大于20的数据

#提供过滤条件函数
def ft(x):
    return x>20

#导入随机包
import random
#随机生成不重复的数据
data=random.sample(range(15,30),10)
print(data)

#返回过滤对象
filtered=filter(ft,data)
print(filtered)
print('@'*100)
print(f'{data} 大于20的数:',end='')
#转换成列表
print(list(filtered))

注意:filter()函数返回值不是一个列表

          如果需要返回列表类型,必须类型转换list()

2、数据清洗和预处理

 需求:删除一个列表中的空字符串和None值:

def removeString(str):
    if str=='' or str is None:
      return False
    else:
      return True

strings = ['mike', 'peoper','', 'boy', None, 'python', 'regular',None,'']
print(strings)

filtered=filter(removeString,strings)
print(list(filtered))

3、复杂条件筛选

 需求:既能被2整除又能被4整除的元素:

#提供过滤条件函数
def ft(x):
    if x%2==0 and x%4==0:
         return True
    else:
        return False
#随机生成不重复的数据
data=random.sample(range(1,30),10)
print(data)

filtered=filter(ft,data)
print(f'{data} 既能被2整除又能被4整除的元素:',end='')
print(list(filtered))

4、与其他函数结合使用

需求:能被3整除的数进行过滤后再进行每个数据乘以2的映射显示

         也就是使用filter函数来筛选出一个列表中符合特定条件的元素,并使用map函数对筛选出的元素进行进一步处理。

#提供过滤条件函数
def ft(x):
    if x%3==0:
         return True
    else:
        return False

def mp(x):
    return x*2
#随机生成不重复的数据
data=random.sample(range(1,21),10)
print(data)

ff=filter(ft,data)
print(list(ff),type(ff))
mapped=map(mp,filter(ft,data))
# mapped=map(mp,ff)
print(list(mapped))

四、总结

   filter()函数是Python中一个强大且灵活的工具,能够简化代码并提高开发效率。通过掌握filter()函数的各种用法,你可以更加高效地处理可迭代对象,实现自己的业务逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/438956.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】not in遇上null的坑

今天遇到一个问题: 1、当 in 内的字段包含 null 的时候,正常过滤; 2、当 not in 内的字段包含 null 的时候,不能正常过滤,即使满足条件,最终结果也为 空。 测试如下: select * from emp e;当…

根据标签出现的频次渲染不同大小的圆和文字,圆随机摆放且相互之间不重叠

效果图: 按每个标签出现的频次大小渲染出不同比例大小的圆,渲染的圆的宽度区间为 [40, 160] ,其中的文字的大小区间为 [12, 30] ,圆的位置随机摆放且不重叠。 根据已知条件可得出,标签中频次最高的对应圆的宽度(直径…

【网络】:再谈传输层(UDP)

传输层 一.再谈端口号二.UDP 一.再谈端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序。 在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看); 1.端口号划分 0 - 1023:…

第5章 HSA内存模型

5.1 引言 在共享内存环境中,独立的控制线程可以竞相修改单个位置。为程序以可预测的方式运行,程序员必须用同步来控制这些竞争。 “内存一致性模型”或“内存模型”定义了并行代理之间通信的基本规则。当这些规则含糊不清地定义或者更糟的是完全不存在…

简站wordpress主题看上去差不多 实际大不一样

有人说简站wordpress主题,都差不多嘛。我表示无语。表面看上去是差不多的,实际的细节是不一样的。 下面以编号:JZP4431和编号:JZP4878这两个主题为例子来讲一下,简站wordpress主题,在细节方面的不一样之处…

Tensorflow实现手写数字识别

模型架构 具有10个神经元,对应10个类别(0-9的数字)。使用softmax激活函数,对多分类问题进行概率归一化。输出层 (Dense):具有64个神经元。激活函数为ReLU。全连接层 (Dense):将二维数据展平成一维,为全连接层做准备。展…

智能部署之巅:Amazon SageMaker 引领机器学习革新

本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 (全球 TMT 2023年12月6日讯)亚马逊云科技在 2023 re:Invent 全…

vue element plus Upload 上传

通过点击或者拖拽上传文件。 基础用法# 通过 slot 你可以传入自定义的上传按钮类型和文字提示。 可通过设置 limit 和 on-exceed 来限制上传文件的个数和定义超出限制时的行为。 可通过设置 before-remove 来阻止文件移除操作。 Click to upload jpg/png files with a size …

python--宣传篇--personal-qrcode个性二维码

文章目录 准备代码效果 准备 代码 from MyQR import myqr import osdef get_img_qrcode(words, save_name, picture, colorizedTrue):if save_name[-3:] in ["jpg", "png", "gif"]:if picture[-3:] in ["png", "jpg", &qu…

我们是如何测试人工智能产品的

在当今数字化时代,人工智能(AI)技术已经成为我们生活中不可或缺的一部分。然而,要构建出可信赖的AI系统并非易事。这需要我们不仅深入理解人工智能的核心原理,还需要将这些理论知识应用到实际场景中。 为了帮助大家系…

CSS3笔记

1.相同优先级的样式以写在后面的为主。 2.交集选择器,并且 条件挨在一起 p.rich{...} /*p元素class有rich的元素*/ 3.并集选择器,或者 逗号隔开 .class1,class2{...}/*满足其中一个类名都会使用该样式*/ 4.后代选择器 空格 隔开 所有符合的包括孙子及…

动态规划:Leetcode 91.解码方法

题目 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : A -> "1" B -> "2" ... Z -> "26" 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法&am…

一个系列很多样式的wordpress外贸建站模板

菌菇干货wordpress跨境电商模板 食用菌、羊肚菌、牛肝菌、香菇、干黄花菜、梅干菜、松茸wordpress跨境电商模板。 https://www.jianzhanpress.com/?p3946 餐饮调味wordpress跨境电商模板 豆制品、蛋黄糖、烘焙、咖啡、调料、调味酱、餐饮调味wordpress跨境电商模板。 http…

vue3的基本使用(1)

Vue3的基本使用(1) 初识vue31. vue3简介2. 性能提升3. 源码升级 Vue3的创建1. vue-cli创建2. vite创建 Composition API的区别(组合式)setup函数响应式数据1. ref响应式2. reactive响应式 toRefs与toRef简单介绍 初识vue3 1. vue…

零售EDI:劳氏 Lowe‘s EDI项目案例

通过 EDI,企业与Lowes之间可以直接交换各种商业文档,如订单、发票、收据等,从而实现信息的实时交换,提高了供应链的效率和准确性。在现代供应链管理中,EDI 已经成为了不可或缺的重要工具。 作为一家拥有多条业务线的企…

笔记76:32位/64位操作系统的区别

64位系统和32位系统的区别: 操作系统只是硬件和应用软件中间的一个平台32位操作系统针对的32位的CPU设计64位操作系统针对的64位的CPU设计我们的CPU从原来的8位,16位,到现在的32位和64位;CPU处理计算的时候“数据”和“指令”是不同对待的 &…

HQYJ 3-7 作业

用两个信号量实现线程同步 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include <semap…

Spring Boot异常处理和单元测试

1.SpringBoot异常处理 1.1.自定义错误页面 SpringBoot默认的处理异常的机制&#xff1a;SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请…

大唐国际务实迎战两会保电,智能巡检机器人助力电力保障

全国两会召开在即。近年来&#xff0c;我国两会期间电力供应稳定性备受关注。作为国家重要的政治盛会&#xff0c;两会的顺利召开需要可靠的电力保障&#xff0c;以确保会议期间各项活动的正常进行。大唐国际作为国内领先的电力企业&#xff0c;面临着如何保障两会期间电力供应…

【b站咸虾米】ES6 Promise的用法,ES7 async/await异步处理同步化,异步处理进化史

课程地址&#xff1a;【ES6 Promise的用法&#xff0c;ES7 async/await异步处理同步化&#xff0c;异步处理进化史】 https://www.bilibili.com/video/BV1XW4y1v7Md/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 图文地址&#xff1a;https://www.b…