zip函数
zip([seq1,seq2,...])
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中下标对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(3.x版本返回一个生成器)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以实现unzip(解压),示例:
lista=[1,2,3]
listb=[2,5,7]
listc=[4,5,6,7,8]
zipab=zip(lista,listb)
print(zipab) # <zip object at 0x032C1D50>
print(list(zipab)) # [(1, 2), (2, 5), (3, 7)]
zipac=zip(lista,listc)
print(list(zipac)) # [(1, 4), (2, 5), (3, 6)]
zipab=zip(lista,listb) # [(1, 2), (2, 5), (3, 7)]
unzipab=zip(*zipab)
print(unzipab) # <zip object at 0x02B81E40>
print(list(unzipab)) # [(1, 2, 3), (2, 5, 7)]map()
map(func,seq1[,seq2,...])
内置函数map()会将参数中除func之外的迭代器做类似于zip()的操作,即将每一个seq中相同下标的元素组合起来,并将该组合传递给func,其中元素组合的组数以seq中长度最短的序列为基准,这一步具体的操作参见上面的zip(),map()最终返回一个生成器。map()的常用操作如下:
当参数中除func外只有一个seq时,func会作用于该seq的每一个元素,并返回一个生成器:
lista=['hilary','miKE','verGiL','TOM','JeRRy']
listb=['AAAAA','BBBB','CCCC','ddddd','fFfFf']
caplist=map(str.capitalize,lista) # 字符串首字母大写
print(caplist) # <map object at 0x03112790>
print(list(caplist)) # ['Hilary', 'Mike', 'Vergil', 'Tom', 'Jerry']
print(list(map(str.upper,listb))) # ['AAAAA', 'BBBB', 'CCCC', 'DDDDD', 'FFFFF']当参数中除func外包含多个seq时,func接受若干seq的zip()组合,并返回一个生成器,此时需要注意func的参数个数与传入的seq每一个组合的元素个数的对应问题:
lista=[1,2,3]
listb=[4,5,6]
listc=[7,8,9,10]
def testFunc(x,y,z):
return x*100+y*10+z
def testFunc2(para):
return para**2
testRes=map(testFunc,lista,listb,listc)
testRes2=map(testFunc2,listc)
print(testRes) # <map object at 0x00682850>
print(list(testRes)) # [147, 258, 369]
print(testRes2) # <map object at 0x02C72930>
print(list(testRes2)) # [49, 64, 81, 100]
testRes3=map(testFunc2,listc,listb)
print(list(testRes3)) # TypeError: testFunc2() takes 1 positional argument but 2 were given
本文详细介绍了Python内置函数zip和map的使用方法。zip函数将多个序列的元素打包为元组列表,而map则应用指定函数到序列的每个元素上。通过示例展示了如何使用这两个函数处理数据。

557

被折叠的 条评论
为什么被折叠?



