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实现的石头剪子布代码分享
Aug 22 Python
python实现将文本转换成语音的方法
May 28 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
利用Python如何批量更新服务器文件
Jul 29 Python
python调用百度REST API实现语音识别
Aug 30 Python
Django Rest framework认证组件详细用法
Jul 25 Python
python修改FTP服务器上的文件名
Sep 11 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
浅谈Python类的单继承相关知识
May 12 Python
python3 字符串str和bytes相互转换
Mar 23 Python
python playwright之元素定位示例详解
Jul 23 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的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP实现搜索相似图片
2015/09/22 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
js 学习笔记(三)
2009/12/29 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
python的常见命令注入威胁
2013/02/18 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
django queryset相加和筛选教程
2020/05/18 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
安全检查与奖惩制度
2014/01/23 职场文书
工程技术员岗位职责
2014/03/02 职场文书
自我鉴定总结
2014/03/24 职场文书
学生自我评语大全
2014/04/18 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
Python代码实现双链表
2022/05/25 Python