python之高级函数


  • 今天,小编将分享6个堪称神仙的内置函数。在很多计算机书籍中,它们也通常作为高阶函数来介绍。而我自己在日常工作中,经常使用它们来使代码更快,更易于理解。
  • 1、Lambda函数
    • Lambda函数用于创建匿名函数,即没有名称的函数。它只是一个表达式,函数体比def简单很多。当我们需要创建一个函数来执行单个操作并且可以在一行中编写时,就可以用到匿名函数了。
    • 语法:执行表达式并返回结果。
    • lambda arguments(参数) : expression(表达式)
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))
  • 2、Map函数
    • map() 会根据提供的函数对指定序列做映射。
    • 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
    • map() 函数语法:map(function, iterable, …)
      • function — 函数
      • iterable — 一个或多个序列
    • 比如我们先创建了一个函数来返回一个大写的输入单词,然后将此函数应有到列表colors中的所有元素。
def makeupper(word):
    return word.upper()

colors = ['red','yellow','green','black']
colors_upper = list(map(makeupper,colors))

print(colors_upper)

#配合lambda函数更加简洁
colors = ['red','yellow','green','black']
print(list(map(lambda x:x.upper(),colors)))

#多个可迭代对象的时候
a=[1,3,5]
b=[2,4,6]

print(list(map(lambda x,y:x*y,a,b)))    #[2, 12, 30]
  • 3、Reduce函数
    • 当需要对一个列表进行一些计算并返回结果时,reduce()是个非常有用的函数。举个例子,当需要计算一个整数列表所有元素的乘积时,即可使用reduce函数实现
    • 它与map函数的最大的区别就是,reduce()里的映射函数(function)接收两个参数,而map接收一个参数
    • Python3.x reduce()已经被移到functools模块里,如果我们要使用,需要引入functools模块来调用 reduce()函数:from functools import reduce
    • 语法:
      • reduce(function, iterable[, initializer])
        • 参数
        • function — 函数,有两个参数
        • iterable — 可迭代对象
        • initializer — 可选,初始参数
    • reduce将函数作用在一个列表上,映射函数接收了两个参数,reduce()把结果继续和列表的下一个元素做累加计算
from functools import reduce

def add(*args):
    result = 0
    for i in args:
        result += i
    return result
L = list(range(1,101))
# print(L)
# print(add(1,2,3))
print(reduce(add,L))

#使用匿名函数lambda
print(reduce(lambda x,y:x+y,range(1,101)))
  • 4、enumerate函数
    • enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中
    • enumerate(iterable, start=0)
      • 它的两个参数,一个是序列、迭代器或其他支持迭代对象;另一个是下标起始位置,默认情况从0开始
colors = ['red', 'yellow', 'green', 'black']
result = enumerate(colors)
for i,j in result:
    print(i,j)
  • 5、Zip函数
    • zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
    • 当我们使用zip()函数时,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
colors = ['red', 'yellow', 'green', 'black']                          
fruits = ['apple', 'pineapple', 'grapes', 'cherry']                   
for item in zip(colors,fruits):                                       
    print(item)                                                       
                                                                      
print(dict(zip(colors,fruits)))      #将两个可迭代对象,一个作为key,一个作为value组成字典  
  • 6、Filter函数
    • filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表
    • filter() 方法的语法: filter(function, iterable)
      • function — 判断函数。
      • iterable — 可迭代对象。
      • 返回filter object 迭代器对象
a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]

def great_then_0(x):
    return x>0

L = filter(great_then_0,a)
print(list(L))

#可以使用匿名函数代替判断函数
print(list(filter(lambda x:x>0,a)))

#过滤掉列表中不及格的学生
a = [
        {"name": "张三", "score": 66},
        {"name": "李四", "score": 88},
        {"name": "王五", "score": 90},
        {"name": "陈六", "score": 56},
     ]

print(list(filter(lambda x:x.get('score')>60,a)))

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279399.html

(0)
上一篇 2022年8月7日
下一篇 2022年8月7日

相关推荐

发表回复

登录后才能评论