Python学习笔记之Zip和Enumerate用法实例分析


Posted in Python onAugust 14, 2019

本文实例讲述了Python Zip和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]
for letter, num in zip(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']
for i, letter in enumerate(letters):
  print(i, letter)

输出如下:

0 a
1 b
2 c
3 d
4 e

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 = []
# write your for loop here
for label, x, y, z in zip(labels, x_coord, y_coord, z_coord):
  points.append(label+": " + str(x) + ', ' + str(y) + ', ' + str(z))
for point in points:
  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))
# define names and heights here
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 的第一个元素应该从 “Barney Stinson” 更改为 "Barney Stinson 72”。

解决方案:

cast = ["Barney Stinson", "Robin Scherbatsky", "Ted Mosby", "Lily Aldrin", "Marshall Eriksen"]
heights = [72, 68, 72, 66, 76]
for i, c in enumerate(cast):
  cast[i] += ' ' + str(heights[i])
print(cast) # ['Barney Stinson 72', 'Robin Scherbatsky 68', 'Ted Mosby 72', 'Lily Aldrin 66', 'Marshall Eriksen 76']

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python信息抽取之乱码解决办法
Jun 29 Python
遗传算法之Python实现代码
Oct 10 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
python中for循环变量作用域及用法详解
Nov 05 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python的变量和简单数字类型详解
Sep 15 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 #Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 #Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 #Python
使用Python实现图像标记点的坐标输出功能
Aug 14 #Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 #Python
python提取照片坐标信息的实例代码
Aug 14 #Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 #Python
You might like
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP闭包实例解析
2014/09/08 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
js运动事件函数详解
2016/10/21 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
简单谈谈JS中的正则表达式
2017/09/11 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
python回调函数用法实例分析
2015/05/09 Python
Python金融数据可视化汇总
2017/11/17 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Python定时器线程池原理详解
2020/02/26 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
绩效工资实施方案
2014/03/15 职场文书
社区重阳节活动总结
2015/03/24 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
同意离婚答辩状
2015/05/22 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript