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的Django框架使用的一些实用建议
Apr 03 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
用python3读取python2的pickle数据方式
Dec 25 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
Python基于gevent实现文件字符串查找器
Aug 11 Python
Python基于百度API识别并提取图片中文字
Jun 27 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
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
vue实现分页加载效果
2019/12/24 Javascript
python flask中静态文件的管理方法
2018/03/20 Python
python标识符命名规范原理解析
2020/01/10 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
EJB的基本架构
2016/09/22 面试题
工程资料员岗位职责
2014/03/10 职场文书
技术合作协议书范本
2014/04/18 职场文书
快餐公司创业计划书
2014/04/29 职场文书
委托书怎么写
2014/07/31 职场文书
食品安全演讲稿
2014/09/01 职场文书
超市工作总结范文2014
2014/12/19 职场文书
英语邀请函范文
2015/02/02 职场文书
小学数学教学随笔
2015/08/14 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书