Python学习笔记之Zip和Enumerate用法实例分析
本文实例讲述了PythonZip和Enumerate用法。分享给大家供大家参考,具体如下:
Python中的Zip
zip的作用:可以在处理循环时用到,返回一个将多个可迭代对象组合成一个元组序列的迭代器。每个元组都包含所有可迭代对象中该位置的元素。
my_zip=list(zip(['a','b','c'],[1,2,3])) print(my_zip)#[('a',1),('b',2),('c',3)]
正如range()一样,我们需要将其转换为列表或使用循环进行遍历以查看其中的元素。
letters=['a','b','c'] nums=[1,2,3] forletter,numinzip(letters,nums): print("{}:{}".format(letter,num))
输出如下:
a:1
b:2
c:3
除了可以将两个列表组合到一起之外,还可以使用星号拆封列表,返回的是单个元组
some_list=[('a',1),('b',2),('c',3)] letters,nums=zip(*some_list) print(letters)#('a','b','c') print(nums)#(1,2,3)
Python中的Enumerate
enumerate是一个会返回元组迭代器的内置函数,这些元组包含列表的索引和值。当你需要在循环中获取可迭代对象的每个元素及其索引时,将经常用到该函数。
示例代码:
letters=['a','b','c','d','e'] fori,letterinenumerate(letters): print(i,letter)
输出如下:
0a
1b
2c
3d
4e
Python中的Zip和Enumerate[相关练习]
使用zip写一个for循环,该循环会创建一个字符串,指定每个点的标签和坐标,并将其附加到列表points。每个字符串的格式应该为label:x,y,z。例如,第一个坐标的字符串应该为F:23,677,4。
解决方案:
x_coord=[23,53,2,-12,95,103,14,-5] y_coord=[677,233,405,433,905,376,432,445] z_coord=[4,16,-6,-42,3,-6,23,-1] labels=["F","J","A","Q","Y","B","W","X"] points=[] #writeyourforloophere forlabel,x,y,zinzip(labels,x_coord,y_coord,z_coord): points.append(label+":"+str(x)+','+str(y)+','+str(z)) forpointinpoints: print(point)
输出如下:
F:23,677,4
J:53,233,16
A:2,405,-6
Q:-12,433,-42
Y:95,905,3
B:103,376,-6
W:14,432,23
X:-5,445,-1
使用zip创建一个字段cast,该字典使用names作为键,并使用heights作为值。
解决方案:
cast_names=["Barney","Robin","Ted","Lily","Marshall"] cast_heights=[72,68,72,66,76] cast=dict(zip(cast_names,cast_heights)) print(cast)
输出:
{'Barney':72,'Ted':72,'Robin':68,'Lily':66,'Marshall':76}
将cast元组拆封成两个names和heights元组。
解决方案:
cast=(("Barney",72),("Robin",68),("Ted",72),("Lily",66),("Marshall",76)) #definenamesandheightshere names,heights=zip(*cast) print(names)#('Barney','Robin','Ted','Lily','Marshall') print(heights)#(72,68,72,66,76)
使用zip将data从4x3矩阵转置成3x4矩阵。
解决方案:
data=((0,1,2),(3,4,5),(6,7,8),(9,10,11)) data_transpose=tuple(zip(*data)) print(data_transpose)#((0,3,6,9),(1,4,7,10),(2,5,8,11))
使用enumerate修改列表cast,使每个元素都包含姓名,然后是角色的对应身高。例如,cast的第一个元素应该从“BarneyStinson”更改为"BarneyStinson72”。
解决方案:
cast=["BarneyStinson","RobinScherbatsky","TedMosby","LilyAldrin","MarshallEriksen"] heights=[72,68,72,66,76] fori,cinenumerate(cast): cast[i]+=''+str(heights[i]) print(cast)#['BarneyStinson72','RobinScherbatsky68','TedMosby72','LilyAldrin66','MarshallEriksen76']
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。