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使用xauth方式登录饭否网然后发消息
Apr 11 Python
利用python写个下载teahour音频的小脚本
May 08 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
PyQT实现多窗口切换
Apr 20 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
Python操作MySQL数据库的方法
Jun 20 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
python异常处理和日志处理方式
Dec 24 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
通过代码简单了解django model序列化作用
Nov 12 Python
Python 循环读取数据内存不足的解决方案
May 25 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
坏狼的PHP学习教程之第1天
2008/06/15 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
微信自定义分享php代码分析
2016/11/24 PHP
PHP文件操作详解
2016/12/30 PHP
【消息提示组件】,兼容IE6/7&&FF2
2007/09/04 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
Node.js搭建小程序后台服务
2018/01/03 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python简单基础小程序的实例代码
2019/04/28 Python
numpy.array 操作使用简单总结
2019/11/08 Python
Python timeit模块的使用实践
2020/01/13 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
2015年度物业公司工作总结
2015/04/27 职场文书
幼儿园辞职信
2015/05/13 职场文书
火烧圆明园观后感
2015/06/03 职场文书