python 内置函数中的map()、zip()、enumerate()

  • Post author:
  • Post category:python





1. 函数map()


描述

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

第一个参数 function 以第二个参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的

新列表




语法

:map(function, iterable, …)


参数

  1. function:实现功能的函数
  2. iterable:迭代序列,可以是多个。


返回值



Python 2.x 返回列表。 Python 3.x 返回迭代器。


实例

#我用的是3.5版本,返回一个迭代对象
def fun(x):
    return x**2
res=map(fun,[1,2,3,4,5])
res_=[i for i in res]
print(res_)  #[1, 4, 9, 16, 25]

#如果里面的参数长度大小不同的话,它会选择最小长度参数来计算
# x长度为5、y长度为8、z长度为4
res1=map(lambda x,y,z:x**2+y**2+z**2,[1,2,3,4,5],[1,2,3,4,5,6,7,8],[1,2,3,4])
res1_=[i for i in res1]
print(res1_)  #[3, 12, 27, 48]

#除了计算幂函数,还可利用 map 函数的映射功能完成其他任务,例如规范名字格式:
name_list={'tony','cHarLIE','rachAEl'}
def format_name(s):
    ss=s[0:1].upper()+s[1:].lower();
    return ss
print (list(map(format_name,name_list))) #['Tony', 'Rachael', 'Charlie']




2. 函数enumerate()


描述

:enumerate() 函数用于将一个

可遍历的数据对象

(如列表、元组或字符串)组合为一个索引序列,

同时列出数据和数据下标

,一般用在 for 循环当中。2.6 中添加了 start 参数。


语法

:enumerate(sequence, [start=0])


参数

  1. sequence:一个可以支持迭代的对象
  2. start:输出下表起始位置


返回值

:一系列的键值对


实例

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
res=list(enumerate(seasons))
print(res)
print(res[0][1]) # 取一个元素
#[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
#Spring
print(list(enumerate(seasons, start=1)))      # 下标从 1 开始
#[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
for i,v in enumerate(seasons,start=0):
   print(i, v)
    #0 Spring
    #1 Summer
    #2 Fall
    #3 Winter




3. 函数zip()


描述

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

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


语法

:zip([iterable, …])


参数

:iterabl – 一个或多个迭代器


返回值

:返回元组列表


实例

x=[5,4,3,2,1]
y=["o","p","q","r","s"]
z=[1,2,3]
res=zip(x,y,z)
res_=[i for i in res]
print(res_) # 最终结果的元素个数和最短的列表一致
#[(5, 'o', 1), (4, 'p', 2), (3, 'q', 3)]
res1=zip(*res_)
res1_=[i for i in res1]
print(res1_) # 反解:[(5, 4, 3), ('o', 'p', 'q'), (1, 2, 3)]
欢迎批评、指正!



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