python10-高阶函数
2024-09-25 05:33:20
def use_filer(l):
"""
获取指定列表/元组中的奇数
:param l: lsit/tuple
:return:
"""
rest = filter(lambda n:n % 2 != 0,l)
return rest
if __name__ == '__main__':
l = [1,2,3,4,5,6,7,8,9]
rest = use_filer(l)
print(list(rest))
结果
[1, 3, 5, 7, 9]
filter函数的原理
def is_even(x):
return x%2==0
tmp = filter(is_even,range(10))
list(tmp)
#最后一定要按照原来的类型转换回来
通过函数f筛选序列中的元素 filter(f,eq)
eq:待过滤的序列 f:过滤规则 tmp = filter(lamda n : n % 2 == 0,range(10))
map是python内置函数,会根据提供的函数对指定的序列做映射。 map()函数的格式是: map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。 把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
def use_filer(l):
"""
获取指定列表/元组中的奇数
:param l: lsit/tuple
:return:
"""
rest = filter(lambda n:n % 2 != 0,l)
return rest
if __name__ == '__main__':
l = [1,2,3,4,5,6,7,8,9]
rest = use_filer(l)
print(list(rest)) def pow_number(l):
"""
给定列表,放回每一项的立方
:param l:
:return:
"""
rest_list = []
for x in l:
rest_list.append(x*x*x)
return rest_list def pow_number_map(l):
"""
:param l:
:return:
"""
#return map(f,l)
return map(lambda n:n*n*n,l) if __name__ == "__main__":
rest = pow_number(l)
print(rest)
print("++++++++++++++++++++++")
rest = pow_number_map(l)
print(list(rest))
结果:
[1, 3, 5, 7, 9]
[1, 8, 27, 64, 125, 216, 343, 512, 729]
++++++++++++++++++++++
[1, 8, 27, 64, 125, 216, 343, 512, 729]
from functools import reduce
def get_sum(l):
"""
求和
:param l:
:return:
"""
rest = 0
for i in l:
rest += i
return rest
def get_sum_use_py(l):
"""
使用内置函数
:param l:
:return:
"""
return sum(l)
def get_sum_use_reduce(l):
"""
使用reduce函数求和
:param l:
:return:
"""
return reduce(lambda n,m:n + m,l) if __name__ == "__main__":
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(get_sum(l))
print(get_sum_use_py(l))
print("!!!!!!!!!!!!!!!!!!!")
print(get_sum_use_reduce(l))
结果
python中的reduce
python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
如:
def myadd(x,y):
return x+y
sum=reduce(myadd,(1,2,3,4,5,6,7))
print(sum)
#结果就是输出1+2+3+4+5+6+7的结果即28
当然,也可以用lambda的方法,更为简单:
sum=reduce(lambda x,y:x+y,(1,2,3,4,5,6,7))
print sum
在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.
最新文章
- RapidFloatingActionButton框架正式出炉
- 《CLR via C#》读书笔记(5)基元类型、引用类型和值类型
- What’s the difference between data mining and data warehousing?
- CSS动画 防止动画结束后,回归原位
- IOS字典NSDictionary与NSMutableDictionary知识点
- WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性
- MS Sqlserver 备份数据库SQL
- WPF拖动DataGrid中的数据到ListBox
- phpQuery用法
- Codeforces Round #250 (Div. 1) B. The Child and Zoo 并查集
- html,css所遇问题(一)
- 使用Thumbnails对一个文件夹下的所有图片进行压缩处理
- ACM 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 开发函数计算的正确姿势 —— 使用 Fun Local 本地运行与调试
- vm中的nat模式不能连接到主机,以及不能上网
- h5软键盘弹起 底部按钮被顶起问题解决
- python中的猴子补丁Monkey Patch
- Golang sync
- tensorflow进阶篇-5(反向传播2)
- linux shell脚本中 mode=${1:-sart} filename=${fileuser:-";filename";}
热门文章
- Elasticsearch 中为什么选择倒排索引而不选择 B 树索引
- CentOS系统优化一键配置脚本
- 记录编译QGIS(3.4+Qt5.11+VS2015)的整个过程
- 【Golang详解】go语言中并发安全和锁
- 深入理解和运用Pandas的GroupBy机制——理解篇
- linux c语言 rename的用法-rename() does not work across different mount points, even if the same file system is mounted on both
- linked-list-cycle leetcode C++
- linux 内核源代码情景分析——linux 内核源代码中的C语言代码
- hash 哈希表 缓存表
- SQL 添加列,删除列,修改列的类型