使用map()、filter()来做到函数式编程

一般来说,大部分工作的规模不至于需要定义类,可是顺着下去写代码在之后的调试,修改都比较麻烦,这种情况下,可以尝试使用函数式编程 函数式编程,顾名思义,整个代码都由相互独立的纯函数构...

一般来说,大部分工作的规模不至于需要定义类,可是顺着下去写代码在之后的调试,修改都比较麻烦,这种情况下,可以尝试使用函数式编程

函数式编程,顾名思义,整个代码都由相互独立的纯函数构成,而且参数和返回值都可以是函数,纯函数还有个优点,他比较稳定不会改变引用值,

但普通函数会,举个例子

def num_1(list):
for index in range(0, len(list)):
list[index] += 1
return list

lst_1=[1,2,3]

print(num_1(lst_1))
print(num_1(lst_1))

[2, 3, 4]

[3, 4, 5]

这个普通函数经过2次调用,让lst_1这个列表的值发生了变化,那纯函数怎么写呢

def num_2(list):
new_lst=[]
for item in range(0, len(list)):
new_lst.append(item + 1)
return new_lst


lst_1=[1,2,3]

print(num_2(lst_1))
print(num_2(lst_1))

[1, 2, 3]

[1, 2, 3]

这样写就不会改变原列表了



切入正题,先介绍一下map(),他的格式是

map(function, iterable)

function可以是内置函数、自定义函数或匿名函数;

iterable表示一个或多个可迭代对象,可以是列表、字符串等

map()功能是对可迭代对象全部调用指定函数,返回一个 map 对象

用一个lambda函数举例

new_lst = map(lambda x, y: x + y, [1, 2, 3, 4, 5], [6, 7, 8, 9, 10])
print(list(new_lst))

[7, 9, 11, 13, 15]


filter()函数,这两个函数格式是一样的

filter(function, iterable)

此格式中,funcition 参数表示要传入一个函数,iterable 表示一个可迭代对象。

filter() 函数的功能是对可迭代对象全部调用指定函数判断,返回一个对象

new_lst = map(lambda x, y: x > y, [1, 2, 9, 4, 5], [6, 7, 8, 9, 10])
print(list(new_lst))

[False, False, True, False, False]

  • 发表于 2022-09-19 17:11
  • 阅读 ( 1495 )
  • 分类:python

0 条评论

请先 登录 后评论
xun
xun

电路元件工程师

80 篇文章

作家榜 »

  1. omicsgene 698 文章
  2. 安生水 347 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 80 文章
  6. 红橙子 78 文章
  7. rzx 74 文章
  8. CORNERSTONE 72 文章