三种常用的内置函数--必须牢记

有三种常用的内置函数,特别牛逼!!!
下面逐个介绍,看仔细了。

1、map()**
用途:处理一个可迭代对象,如列表、元组和字符串。以列表为例,处理的是里面的元素,返回的也是一个同等长度的列表。
老规矩,举例说明。
比如:对于列表[1,2,3,4,5],怎样变成[2,3,4,5,6]

(1) 常规做法

num_l = [1,2,3,4,5]
def test(array):
      li = []
      for i in array:
            i += 1
            li.append(i)
      return li

print(test(num_l))
输出结果:[2, 3, 4, 5, 6]

(2)优化做法
上面这个方法显然是在函数体中把逻辑写死了,如果需要不断的变换,则每次都要去改这个主函数体,显然不好。来吧,优化一下。

num_l = [1,2,3,4,5]
def num_add(x):
       return x + 1

def test(func,array):
       li = []
       for i in array:
              li.append(func(i))
       return li

print(test(num_add,num_l))
输出结果:[2, 3, 4, 5, 6]

(3)最牛逼的做法
其实方法上面(2)已经优化的挺好了,但是代码显得还是很啰嗦,python的牛逼之处就在于代码非常精简,牛逼的很。来,伙计们,看看下面的骚操作。

num_l = [1,2,3,4,5]
res = list(map(lambda x:x+1,num_l))
print(res)
输出结果:[2, 3, 4, 5, 6]

2、filter()*
用途:处理可迭代对象,比如列表,元组,字符串,处理每一个元素返回bool类型,最常见的用法是用于筛选数据。
不废话了,上例子。需求:把如下列表['sb_jack','rose','sb_pig']中的sb全部删除,只留下rose

(1)常规做法

people_list = ['sb_jack','rose','sb_pig']
def test(array):
      li = []
      for i in array:
            if not i.startswith('sb'):
                      li.append(i)
            else:
                      pass
      return li

res = test(people_list)
print(res)
输出结果:['rose']

(2)优化版本

people_list = ['sb_jack','rose','sb_pig']
def move_name(n):
      return n.startswith('sb')

def test(func,array):
       li = []
       for i in array:
            if not func(i):
                  li.append(i)
            else:
                  pass
       return li 

res = test(move_name,people_list)
print(res)
输出结果:['rose']

(3)牛逼版本 --三行代码把傻逼从列表里过滤掉。

people_list = ['sb_jack','rose','sb_pig']
res = list(filter(lambda n:not n.startswith('sb'),people_list))
print(res)
输出结果:['rose']

3、reduce -- 需要先导入from functools import reduce
用途:对可迭代对象做处理,并最后得到一个结果。函数test()可以传三个参数,第一个参数是个函数,第二个参数是要计算的列表,第三个参数可传个默认值,第三个参数不传也没关系。
比如计算一个列表的元素的加和。举例:计算列表[1,2,3,9,7,5]中每个元素的加和。

(1)常规版本

l = [1,2,3,9,7,5]
def test(array):
      sum = 0
      for i in l:
           sum += i
      return sum

res = test(l)
print(res)
输出结果:27

(2)优化版本

l = [1,2,3,9,7,5]
def sum_test(x,y):
      return x + y

def test(func,array):
      res = array.pop(0)
      for i in array:
            res = func(res,i)
      return res

print(test(sum_test,l))
输出结果:27

(3)牛逼版本

from functools import reduce
l = [1,2,3,9,7,5]
res = reduce(lambda x,y:x+y,l)
print(res)
输出结果:27

以上就是三种常见的内置函数,非常牛逼,可以明显精简代码。

posted @ 2024-07-02 08:54  派森马  阅读(2)  评论(0编辑  收藏  举报