Python函数:lambda,map,filter,zip,enumerate

  • Post author:
  • Post category:python




一,lambda函数

  • (1)lambda函数

    • lambda函数是一种匿名函数,即没有名字的函数
    • 使用lambda保留字定义,函数名是返回结果
    • lambda函数用于定义简单的,能够在一行内表示的函数
       <函数名> = lambda<参数> :<表达式>
等价于 
     def  <函数名>(<参数>):
          <函数体>
          return <返回值>
  • (2)lambda表达式

    • lambda表达式可以用来声明匿名函数,也就是没有函数名字的临时使用的小函数,尤其适合需要一个函数作为另一个函数参数的场合。也可以定义具名函数。
    • lambda表达式只可以包含一个表达式,该表达式的计算结果可以看做是函数的返回值,不允许包含复合语句,但在表达式中可以调用其他函数。
>>> f = lambda x,y,z : x+y+z
>>>f(1,2,3)
6
>>>g = lambda x,y = 2,z = 3:x+y+z
>>>g(1)
6
>>>g(2,z = 4,y = 5)
11
  • (3)lambda函数的应用

    • lambda函数主要用作一些特定函数或方法的参数
    • lambda函数有一些固定使用方式
    • 一般情况,建议使用def定义的普通函数



二,map函数

  • (1)描述

    map()会根据提供的函数对指定序列做映射。

    第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表。
  • (2)语法

    map()函数语法: map(function,iterable,···)

    参数:

    • function — 函数
    • iterable — 一个或多个序列

      返回值:

      • python 2.x 返回列表。
      • python 3.x 返回迭代器。
  • (3)应用
def add(x,y,z):
    return x+y+z
list1 = [1,2,3]
list2 = [1,2,3,4]
list3 = [1,2,3,4,5]
res = map(add,list1,list2,list3)
print(list(res))

[3, 6, 9]



三,filter函数

  • (1)描述

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
  • (2)语法

    filter()语法:filter(function,iterable)

    参数:

    • function — 判断函数
    • iterable — 可迭代对象

注意: Pyhton2.7 返回列表,Python3.x 返回迭代器对象!!!

  • (3)使用

    内置函数filter()将一个单参数函数作用到一个序列上,返回该序列中是的该函数返回值为True的那些元素组成的filter对象,如果指定函数为None,则返回序列中等价于True的元素。
>>> seq = [ 'foo' ,'x41’, '?!', '***'] 
>>> def func(x): return x. isalnum()      #测试是否为字母或数字
 >>> filter(func, seq)                      #返回filter对象 
 <filter object at 0000000000305D898> 
 >>> list(filter(func, seq))    #把filter对象转换为列表 ['foo', 'x41']



四,zip函数

  • (1)描述

    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

    如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

    zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

  • (2)语法

    zip()语法:zip([iterable,…])

    参数说明:

    • iterable — 一个或多个迭代器

    返回值:返回元组列表。

  • (3)使用

>>>a = [1,2,3]
>>>b = [4,5,6]
>>>zip(a,b)
<zip at 0x20983ad7cc8>

>>>list(zip(a,b))
[(1, 4), (2, 5), (3, 6)]

>>>zipped = zip(a,b)
>>>list(zip(*zipped))
[(1, 2, 3), (4, 5, 6)]



五,enumerate函数

  • (1)描述

    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

    Python 2.3. 以上版本可用,2.6 添加 start 参数。

  • (2)语法

    enumerate语法:enumerate(sequence,[start = 0])

    参数:

    • sequence — 一个序列,迭代器或其他支持迭代对象
    • start — 下标起始位置

    返回值:返回enumerate(枚举)对象。

  • (3)应用

>>>seasons = [' Spring', ' Summer' ,'Fall', 'Winter']
>>>list (enumerate (seasons))
[(0, Spring ), (1, , Summer'), (2, 'Fall'), (3, ' Winter')]

>>>list (enumerate (seasons, start=1))    #从下标1开始
[(1, ’Spring' ), (2, 'Summer' ), (3, 'Fall'), (4, 'Winter' )]

>>>i=0
>>>seq = ['Tom'  ,' Jerry, ' Bob']
>>>for element in seq:
       print(i, seq[i])
       i +=1
 0 Tom
 1 Jerry
 2 Bob

>>>seq = ['Tom'  ,' Jerry, ' Bob']
>>>for i, element in enumerate(seq):
      print(i, element)
 0 Tom
 1 Jerry
 2 Bob



版权声明:本文为SongJinGuo666原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。