ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python之高级函数

2022-08-07 18:30:44  阅读:862  来源: 互联网

标签:function 函数 python reduce 高级 colors print lambda


  • 今天,小编将分享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)))

标签:function,函数,python,reduce,高级,colors,print,lambda
来源: https://www.cnblogs.com/xwltest/p/16559591.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有