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中的floor()方法
May 15 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 Python
python更改已存在excel文件的方法
May 03 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
python pygame实现2048游戏
Nov 20 Python
Python unittest 简单实现参数化的方法
Nov 30 Python
基于Python快速处理PDF表格数据
Jun 03 Python
用python实现名片管理系统
Jun 18 Python
Python datetime模块使用方法小结
Jun 18 Python
解决pytorch 数据类型报错的问题
Mar 03 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 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面向对象分析设计的经验原则
2008/09/20 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
js的2种继承方式详解
2014/03/04 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
Django实现文件上传和下载功能
2019/10/06 Python
Python正则表达式如何匹配中文
2020/05/27 Python
详解python metaclass(元类)
2020/08/13 Python
防灾减灾活动总结
2014/08/30 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
基于flask实现五子棋小游戏
2021/05/25 Python
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
Python实现简单的俄罗斯方块游戏
2021/09/25 Python