一般来说,大部分工作的规模不至于需要定义类,可是顺着下去写代码在之后的调试,修改都比较麻烦,这种情况下,可以尝试使用函数式编程
函数式编程,顾名思义,整个代码都由相互独立的纯函数构成,而且参数和返回值都可以是函数,纯函数还有个优点,他比较稳定不会改变引用值,
但普通函数会,举个例子
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]
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!