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 19 Python
wxPython的安装与使用教程
Aug 31 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
将python文件打包成EXE应用程序的方法
May 22 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
python开发入门——列表生成式
Sep 03 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 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 smarty模板引擎的6个小技巧
2014/04/24 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
yy婚礼司仪主持词
2014/03/14 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
争先创优活动总结
2014/08/27 职场文书
医院营销工作计划
2015/01/16 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis