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自动生成文章
Dec 25 Python
Python多进程机制实例详解
Jul 02 Python
python从入门到精通(DAY 1)
Dec 20 Python
Python实现字典依据value排序
Feb 24 Python
python制作小说爬虫实录
Aug 14 Python
Python常见MongoDB数据库操作实例总结
Jul 24 Python
在Python中表示一个对象的方法
Jun 25 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
Python析构函数__del__定义原理解析
Nov 20 Python
Python用户自定义异常的实现
Dec 25 Python
用基于python的appium爬取b站直播消费记录
Apr 17 Python
Python 如何解决稀疏矩阵运算
May 26 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 stream_context_create()作用和用法分析
2011/03/29 PHP
php伪静态之APACHE篇
2014/06/02 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python框架django项目部署相关知识详解
2019/11/04 Python
Python 没有main函数的原因
2020/07/10 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
Python eval函数介绍及用法
2020/11/09 Python
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
药剂专业学生求职信范文
2013/12/28 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
2014年营销工作总结
2014/11/22 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
详解Java实现数据结构之并查集
2021/06/23 Java/Android
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript