您的位置:首页 > 编程语言 > Python开发

Python内置函数

2020-02-01 13:46 483 查看

map

map(function, sequence) 

map()
函数接收两个参数,一个是函数,一个是
Iterable
map
将传入的函数依次作用到序列的每个元素,并把结果作为新的
Iterator
返回。

map()
作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

 

filter

filter(function, sequence)

Python内建的

filter()
函数用于过滤序列。

map()
类似,
filter()
也接收一个函数和一个序列。和
map()
不同的是,
filter()
把传入的函数依次作用于每个元素,然后根据返回值是
True
还是
False
决定保留还是丢弃该元素。

def is_odd(n):
return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]

与map的不同

1 # map
2
3 def f(x):
4     return x * x
5
6 r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
7 print(list(r))
8
9 # 结果
10 #[1, 4, 9, 16, 25, 36, 49, 64, 81]
11
12 # filter
13
14 def f(x):
15     return x * x
16
17 r = filter(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
18 print(list(r))
19
20 #结果
21 #[1, 2, 3, 4, 5, 6, 7, 8, 9]

 reduce

reduce(function, sequence, starting_value)

reduce()把一个函数作用在一个序列[x1, x2, x3,...]上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

reduce使用前需要先声明

from functools import reduce

对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用.

1 from functools import reduce
2
3 def add1(x,y):
4     return x + y
5
6 print (reduce(add1, range(1, 101)))## 4950 (注:1+2+...+99)
7
8 print (reduce(add1, range(1, 101), 20))## 4970 (注:1+2+...+99+20)

lambda

  匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b)。

  因为lamdba在创建时不需要命名,所以,叫匿名函数

匿名函数

lambda x: x * x
实际上就是:

def f(x):
return x * x

a = lamdba x: x * x,a是一个函数名

用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数

 

1 #普通函数
2 def add(a,b):
3     return a + b
4
5 print add(2,3)
6
7
8 #匿名函数
9 add = lambda a,b : a + b
10 print add(2,3)
11
12
13 #========输出===========
14 5
15 5

 

转载于:https://www.cnblogs.com/bw13/p/5848910.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
dengdieli5313 发布了0 篇原创文章 · 获赞 0 · 访问量 126 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: