1. 函数map()
描述
:map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以第二个参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的
新列表
。
语法
:map(function, iterable, …)
参数
:
- function:实现功能的函数
- 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])
参数
:
- sequence:一个可以支持迭代的对象
- 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)]