3个用于提效的Python函数,建议收藏!!

2020-07-13 14:18:06 浏览数 (1)

Python作为一种编程语言,在人们的日常工作与生活中应用地愈加广泛,有些人将其用来做爬虫、数据分析与可视化,也有不少人用它来做机器学习与深度学习建模预测。为了避免敲打出复杂而又冗长的代码,今天小编就来和大家分享一下Python当中可以提效的三个函数方法,希望大家可以喜欢。

map()

在map()函数中可以另外自定义一个函数作为其中的参数,同时附带上列表或者是数组作为另外一个参数,以此将函数作用在列表中的每一个元素上,

代码语言:javascript复制
def num_func(x):
    return x**2/2

然后我们将其放入map()函数当中并且作用于列表当中的每一个元素,

代码语言:javascript复制
data = [1,3,5,7,9,12]
list(map(num_func, data))
# 输出为:[0.5, 4.5, 12.5, 24.5, 40.5, 72.0]

相信读者在日常的实践操作中用for循环的比较多,但是与map()函数相比还是略显复杂与冗长,同时更加简洁的方式就是map和lambda结合,

代码语言:javascript复制
data = [1,3,5,7,9,12]
result = list(map(lambda x: x**2/2, data))
print(result)
# 输出的结果一样也为:[0.5, 4.5, 12.5, 24.5, 40.5, 72.0]

filter()

从函数名就可以明显的看出,该函数可以帮助我们挑选出那些符合特定条件的元素,当然读者也完全可以使用for循环加if条件筛选来过滤出相应的元素,但上述操作实在太过于繁琐,比方说先定义一个函数

代码语言:javascript复制
def bigger_than_15(x):
    return x > 15

紧接着将其放置于filter函数当中并且作用于列表中的每一个元素

代码语言:javascript复制
data = [2, 9, 6, 17, 12, 16, 29, 20, 12, 30]
list(filter(bigger_than_15, data))
# 输出为:[17, 16, 29, 20, 30]

从上述的例子中可以看出,filter()函数将列表中大于15的元素都给筛选出来

reduce()

reduce()函数稍稍与前两者有所不同,map()与filter()函数结果返回的都是一组数据,而reduce()函数返回的则是单个数值,假设我们定义一个函数,将两元素相加,

代码语言:javascript复制
def add_nums(a, b):
  return a   b

reduce()函数要做的则是遍历列表中的每一个元素做一个累加,具体可以根据下图来理解,

而最后要输出的结果则是70,也就是列表中所有元素的累加得出

代码语言:javascript复制
from functools import reduce
data = [5, 10, 12, 18, 25]
reduce(add_nums, data)
# 输出结果为:70

在上面例子的基础之上,读者也可以自己举一反三,编写其他函数放置于reduce()当中去。

0 人点赞