打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python 内置函数与匿名函数

内置函数-----filter和map

  • filter
  • filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除奇数,保留奇数,首先,要编写一个判断奇数的函数

def add(x):

return x % 2 == 1

然后,利用filter()过滤掉偶数

a = filter(add, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

filter()过滤掉偶数后的结果

print(list(a))

#[1, 3, 5, 7, 9]

利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串

def is_not_empty(s):

return s and len(s.strip()) > 0

r = filter(is_not_empty,['sts', None, ' '])

print(list(r))

注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。

当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:

a = '123 '

print(a.strip())

a = '\t\t\n123\t\t\n\n'

print(a.strip())

请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

import math # 导入数学常量

def is_sqr(x):

return math.sqrt(x) % 1 == 0 # .sqrt为开根号

s = filter(is_sqr, range(1, 101))

print(list(s))

  • map
  • Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理。

L = [1,2,3,4,5]

def is_square(x):

return x * x

s = map(is_square,L)

print(list(s))

  • sorted

对List、Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本 方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变

--------------------------------sorted---------------------------------------

sorted(iterable, key=None, reverse=False)

Return a new list containing all items from the iterable in ascending order.

A custom key function can be supplied to customise the sort order, and the

reverse flag can be set to request the result in descending order.

-----------------------------------------------------------------------------

参数说明: iterable:是可迭代类型;

key:传入一个函数名函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序; reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。

返回值:有序列表

例子

  • 列表按照其中每一个值的绝对值排序

l1 = [-1,2,-2,-4,0,1,3,5,7]

l2 = sorted(l1,key=abs)

print(l1)

print(l2)

  • 列表按照每一个元素的len排序

l = ['1','2',[1,2,3],'sssssss']

l2 = sorted(l,key=len)

print(l2)

匿名函数

  • 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

匿名函数格式

函数名 = lambda 参数 :返回值

#参数可以有多个,用逗号隔开

#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值

#返回值和正常的函数一样可以是任意数据类型

请把以下函数变成匿名函数

def add(x,y):

return x+y

结果

kkk = lambda x, y: x+y

上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

l=[3,2,100,999,213,1111,31121,333]

print(max(l))

dic={'k1':10,'k2':100,'k3':30}

print(max(dic))

print(dic[max(dic,key=lambda k:dic[k])])

res = map(lambda x:x**2,[1,5,7,4,8])

for i in res:

print(i)

# 输出

# 1

# 25

# 49

# 16

# 64

res = filter(lambda x:x>10,[5,8,11,9,15])

for i in res:

print(i)

# 输出

# 11

# 15

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python入门教程(七)函数式编程,匿名函数和map,filter函数
Python 匿名函数Lambda的9种用法
python 常用的基础函数
一篇文章带你搞定Python匿名函数
Python学习笔记 | 匿名函数lambda、映射函数map和过滤函数filter
Python 字典排序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服