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之入门(二)基本数据类型
May 25 Python
让python同时兼容python2和python3的8个技巧分享
Jul 11 Python
使用Python实现一个简单的项目监控
Mar 31 Python
在Python中操作字典之update()方法的使用
May 22 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
Python循环语句之break与continue的用法
Oct 14 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
如何运行带参数的python脚本
Nov 15 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
python热力图实现简单方法
Jan 29 Python
聊一聊python常用的编程模块
May 14 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 进度条函数的简单实例
2017/09/19 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
Javascript - HTML的request类
2006/07/15 Javascript
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
微信小程序如何获取用户收货地址
2018/11/27 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
Python实现将Excel转换为json的方法示例
2017/08/05 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Python实现FTP文件传输的实例
2019/07/07 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
python自动生成证件号的方法示例
2021/01/14 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
幼儿园门卫岗位职责
2014/02/14 职场文书
服务质量承诺书
2014/03/27 职场文书
项目合作协议书范本
2014/04/16 职场文书
银行转正自我鉴定
2014/09/29 职场文书
党支部综合考察意见
2015/06/01 职场文书
导游词之河北野三坡
2019/12/11 职场文书
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang