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写的windows服务不能启动的问题
Apr 15 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python中生成Epoch的方法
Apr 26 Python
python基本语法练习实例
Sep 19 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
详解Django的CSRF认证实现
Oct 09 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
Python的条件锁与事件共享详解
Sep 12 Python
Python tkinter三种布局实例详解
Jan 06 Python
python计算导数并绘图的实例
Feb 29 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版)
2006/10/09 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
Angular工具方法学习
2016/12/26 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
pyv8学习python和javascript变量进行交互
2013/12/04 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
python使用mysql的两种使用方式
2018/03/07 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
实习自我鉴定模板
2013/09/28 职场文书
公共事业管理本科生求职信
2013/10/07 职场文书
物业管理员岗位职责范文
2013/11/25 职场文书
工作保证书范文
2014/04/29 职场文书
课外活动总结范文
2014/07/09 职场文书
关于读书的活动方案
2014/08/14 职场文书
老干部工作先进事迹
2014/08/17 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技