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列表生成器的循环技巧分享
Mar 06 Python
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
python无序链表删除重复项的方法
Jan 17 Python
python 常见的排序算法实现汇总
Aug 21 Python
Python机器学习之逻辑回归
May 11 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
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
详解Python做一个名片管理系统
2019/03/14 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
Servlet的生命周期
2013/08/25 面试题
如何理解transaction事务的概念
2015/05/27 面试题
劳动实践课感言
2014/02/01 职场文书
管理失职检讨书
2014/02/12 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书