首页 > 编程语言 >Python中常用的几个内置方法(max()/min()、filter()、map()、sorted、reduce())

Python中常用的几个内置方法(max()/min()、filter()、map()、sorted、reduce())

时间:2024-06-13 19:46:05浏览次数:21  
标签:map obj 迭代 min Python res filter 参数 lis

1.max()/min()

  • 传入一个参数 (可迭代对象), 返回这个可迭代对象中最大的元素
    可以设置default关键字参数, 当这个可迭代对象为空时, 返回default的值
  • 传入多个参数, 返回这些参数中最大的参数
    多个参数必须是同类型的
  • 两种方法都可以设置key关键字参数(传入函数)
"""
    max(iterable, *[, default=obj, key=func]) -> value
    max(arg1, arg2, *args, *[, key=func]) -> value
    
    With a single iterable argument, return its biggest item. The default keyword-only argument specifies an object to return if the provided iterable is empty.
    With two or more arguments, return the largest argument.
"""


res = max([1, 2, 3], default=0)
print(res)  # 3

# 传入了一个空的可迭代的对象参数, 返回默认值0
res = max([], default=0)
print(res)  # 0



lis = [1, 2, 3]


def func(num):
    return -num


# res = max(lis, key=func)
res = max(lis, key=lambda num: -num)
print(res)  # 1

key参数接收的是一个函数对象
max函数会将lis里面的元素依次传入转换函数
哪个元素经过转换函数得到的值最大, 就返回该元素

2.filter() 过滤

第一个参数(形参), 要么是func, 要么是None, 不传会报错

第二个参数是可迭代对象

返回一个filter obj (iterator)

filter()方法会过滤掉:

  • 本身布尔值为False的元素
  • 经过函数处理后, 返回值的布尔值为False的元素
filter(function or None, iterable) --> filter object

Return an iterator yielding those items of iterable for which function(item) is true. If function is None, return the items that are true.

需要传入两个参数, 第一个是函数或者None, 第二个是可迭代对象

返回的是一个filter obj(迭代器)

如果第一个参数时None, 则返回的迭代器中只包含可迭代对象中为True的元素

如果第一参数是一个函数, 可迭代对象中元素传入该函数, 结果为True, 则filter方法返回的迭代器就会
包含此元素

lis = [0, 1, 2, 3]

filter_obj = filter(None, lis)
print(list(filter_obj))  # [1, 2, 3]


def func(num):
    if num > 1:
        return 0


filter_obj = filter(func, lis)
print(list(filter_obj))  # []

filter_obj = filter(lambda num: num > 1, lis)
print(list(filter_obj))  # [2, 3]

3.map() 映射

第一个参数必须是函数
后面可传入一个或多个可迭代对象参数

  • 可迭代对象参数的个数, 必须和函数的参数个数相同
  • 多个可迭代对象包含的元素个数不一致, 则以元素个数最少的那个为准
    返回一个map obj (iterator)
"""
    map(func, *iterables) --> map object
    
    Make an iterator that computes the function using arguments from
    each of the iterables.  Stops when the shortest iterable is exhausted.    
"""
    
def func1(x):
    return x + 1


"""
参数1: 函数, 参数2:可迭代对象
1.可迭代对象的中的元素依次传入函数得到返回值res
2.调用map函数最终会得到一个迭代器对象iterator
3. 这个iterator就包含了res
"""

map_obj = map(func1, [1, 2, 3])
print(list(map_obj))  # [2, 3, 4]


def func2(x, y):
    return x + y


"""
传入的可迭代对象参数个数与函数所需要的参数个数是相等的
取值个数以最短的为准
"""
map_obj = map(func2, [1, 2, 3], [1, 2, 3, 4])
print(list(map_obj))  # [2, 4, 6]

4.sorted筛选

  • 第一个参数是可迭代对象
  • 第二参数是key, 第三个参数是reverse, 这两个参数可不传
"""
	sorted(iterable, key, reverse) --> list
	
    Return a new list containing all items from the iterable in ascending order.
    A custom key function can be supplied to customize the sort order, and the reverse flag can be set to request the result in descending order.
"""
lis = [3, 2, 4, 5, 1]

# 1.只传入可迭代对象参数
res = sorted(lis)
print(res)  # [1, 2, 3, 4, 5]


def func(x):
    return -x

#2.当传入函数时, 可迭代对象元素排序的依据是他们传入函数得到结果
#注意: 还是对原来的元素进行排序, 而不是对元素传入函数得到的结果, 只是以这个结果为排序的依据

res = sorted(lis, key=func)
print(res)  # [5, 4, 3, 2, 1]

5.reduce()减少

  • 第一个参数是函数:该函数必须是有且只有两个参数
  • 第二个参数是序列
  • initial是初始值, 可以当做序列的第一个元素
  • 这个reduce指的是不断减少的是序列中的元素个数, 直到序列只剩下一个元素, 返回该元素
from functools import reduce

"""
    reduce(function, sequence[, initial]) -> value

    Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value.
    For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5).  
    If initial is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty.
"""
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:153708845

lis = [1, 2, 3, 4, 5]
res1 = reduce(lambda x, y: x + y, lis)
print(res1)  # 15

res2 = reduce(lambda x, y: x + y, lis, 1)
print(res2)  # 16

标签:map,obj,迭代,min,Python,res,filter,参数,lis
From: https://www.cnblogs.com/xxpythonxx/p/18246640

相关文章

  • Python实现:查找文本文件中重复的汉字
    查找文本文件中重复的汉字,找到在所在行号文本文件格式大小多少前后左……text.pyimportosimportrelist=[]same=0total=0index=[]withopen("1.txt","r",encoding="utf-8")asf:forlineinf.readlines():line=line.strip('\n......
  • ABC348E Minimize Sum of Distances 题解
    ABC348EMinimizeSumofDistances题目大意给定一棵共\(n\)个节点的树,第\(i\)个点的权重为\(c_i\)。定义\(f(x)\)表示树上所有点到节点\(x\)的距离乘上权重,即\(f(x)=\sum\limits_{i=1}^n(c_i\timesdis(x,i))\)。求\(\min\limits_{u=1}^nf(u)\)。Solve一眼换根......
  • python爬虫
    What's爬虫?简单来说:爬虫,即网络蜘蛛,是伪装成客户端与服务器进行数据交互的程序。代码frombs4importBeautifulSoup#网页解析importurllib.request,urllib.error#制定URL,获取网页数据importre#正则表达式进行文字匹配importx......
  • AI时代的创新工具:如何利用AI生成独具个性的XMind思维导图?
    哈喽,大家好,我是木头左,物联网搬砖工一名,致力于为大家淘出更多好用的AI工具!背景随着互联网的发展,越来越多的人开始使用Markdown来编写文档。Markdown是一种轻量级的标记语言,它允许人们使用简单的文本格式来编写文档,然后将其转换为HTML、PDF等格式。而思维导图则是一种可视化的工......
  • Python 如何将Latex转换成Word公式?
    好久没写博客啦!最近帮女朋友(数学老师)搞了个题目转成Word的小工具。情景就是,我们在一些图片里获取到数学题目时通常会使用到ocr技术,但是呢通过ocr给到的数学公式是Latex表达式,这也就是为什么我们用识图软件或者手机微信等自带的识别不了数学公式,识别了粘贴到word中又变成了......
  • 量化交易:miniQMT的可转债与正股折价套利策略python代码
    哈喽,大家好,我是木头左!套利是一种艺术,一种利用市场的价格差异来获取无风险利润的艺术。而可转债与正股之间的折价套利,更是量化交易者眼中的香饽饽。今天,我们将一起揭开这层神秘的面纱,探索如何使用miniQMT和Python来实现这一策略。......
  • JavaScript 编程语言【数据类型】映射|集合|WeakMap and WeakSet
    文章目录MapandSet(映射和集合)MapMap迭代Object.entries:从对象创建Map]Object.fromEntries:从Map创建对象SetSet迭代(iteration)总结✅任务过滤数组中的唯一元素过滤字谜(anagrams)迭代键WeakMapandWeakSet(弱映射和弱集合)WeakMap使用案例:额外的数据使用案例:缓存Weak......
  • 流畅的python--第十三章 接口、协议和抽象基类
    面向对象编程全靠接口。在Python中,支撑一个类型的是它提供的方法,也就是接口。在不同的编程语言中,接口的定义和使用方式不尽相同。从Python3.8开始,有4种方式,如图13-1中的类型图所示。这4种方式概述如下。鸭子类型自Python诞生以来默认使用的类型实现方式。从第1......
  • Vue Antd Admin本地部署
    官网:https://doc.vue-antd-admin.pages.dev/github地址:https://github.com/iczer/vue-antd-admin/tree/basic 1、basic分支本地部署(开发基于此分支)克隆项目basic分支到本地->>下载依赖:npminstall->>启动项目:npmrunserve 2、master分支本地部署(研究基于此分支-试......
  • 在Minitab中进行正态能力分析(顺便计算出Cpk)—— 熟悉非正态数据转换(Box-Cox与Johnson
    一、下面是用Minitab表达的正态分布能力分析,也可直接计算出了Cpk,1.普通正态分布能力分析,注意Cpk,Ppk的值>1.33,表明能力充足;性能指标中ppm1.11*10-6(每百万个钟有1.11个不合格品,说明质量控制的比较好)     2.Johnson变换后的正态分布能力分析 3.Box-Cox变换 ......