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生成XML的方法实例
Mar 21 Python
浅析使用Python操作文件
Jul 31 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python 合并多个excel中同名的sheet
Jan 22 Python
python中的unittest框架实例详解
Feb 05 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 Python
Pygame如何使用精灵和碰撞检测
Nov 17 Python
python解析json数据
Apr 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实现推荐功能的简单实例
2019/09/29 PHP
jquery 上下滚动广告
2009/06/17 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
python动态参数用法实例分析
2015/05/25 Python
Python实现包含min函数的栈
2016/04/29 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python使用opencv进行人脸识别
2017/04/07 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
python占位符输入方式实例
2019/05/27 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
法国在线药房:1001Pharmacies
2021/03/07 全球购物
旅游管理专业个人求职信范文
2013/12/24 职场文书
参观监狱心得体会
2014/01/02 职场文书
美德好少年事迹材料
2014/01/19 职场文书
教师校本培训方案
2014/02/26 职场文书
党建目标管理责任书
2014/07/25 职场文书
班级出游活动计划书
2014/08/15 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
财产分割协议书
2016/03/22 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
MySQL分区表实现按月份归类
2021/11/01 MySQL