Python学习笔记之Zip和Enumerate用法实例分析
作者:Johnny丶me 发布时间:2021-09-03 19:58:50
本文实例讲述了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程序设计有所帮助。
来源:https://blog.csdn.net/Tyro_java/article/details/80725682


猜你喜欢
- 前言有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用。 本来用一个json:",string"
- 在plugin/tagbar.vim里面的键映射改成: \ ['nexttag', '<
- 前言本文用Python实例阐述了一些关于进程、线程和协程的概念,由于水平有限,难免出现错漏,敬请批评改正。前提条件熟悉Python基本语法熟
- __add__(), 同一个类,两个对象相加的实现逻辑,重写 +class Myclass(object): &n
- 本文实例为大家分享了pyqt实现右下角弹出框的具体代码,供大家参考,具体内容如下构造函数中:self.desktop=QDesktopWid
- 最近写一个小小的留言本;算是对AJAX的综合应用迈出了一小步在制作过程中有很多兴奋的体验 虽然和以前的制作方法比起来繁杂了一些但是整个页面的
- List>>> [chr(i) for i in range(97,123)]['a', 'b&#
- 1.可以通过settings/dev.py的ALLOWED_HOSTS,设置允许访问# 设置哪些客户端可以通过地址访问到后端 A
- 1、开源库 Web 领域:Sanic https://github.com/channelcat/sanic这个库的名字和之前一个
- 先导上一期讲了在ABAP中,ALV的普通写法,流程以及相关属性,还讲了基本DEMO ,但是在真正开发中,不会写这么多的代码.原则上是一切从简
- 一、什么是数据库连接池就是一个容器持有多个数据库连接,当程序需要操作数据库的时候直接从池中取出连接,使用完之后再还回去,和线程池一个道理。二
- 一、简述MySQL版本从5直接 * 到8,相信MySQL8一定会有很多令人意想不到的改进,如果不想只会CRUD可以看看。比如系统表引擎的变化
- 使用del和drop方法删除DataFrame中的列,使用drop方法一次删除多列数据准备:import pandas as pd
- 用户部分是一个网站的基本功能,django对这部分进行了很好的封装,我们只需要在django的基础上做些简单的修改就可以达到我们想要的效果首
- 爬楼梯(Climbing-Stairs)题干:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同
- 如何提高Request集合的使用效率?以加快程序处理速度: strTitle=Request.Form("Title&q
- 一般情况下,访问或设置剪贴板,IE 只需使用 window.clipboardData 的 getData 或 setData 方法即可。M
- 多表查询使用单个select 语句从多个表格中取出相关的查询结果,多表连接通常是建立在有相互关系的父子表上;1交叉连接第一个表格的所有行 乘
- 用pyinstaller打包的exe文件打开时,命令窗口一闪而过,并且未出现GUI界面,也看不到错误信息,然后去网上搜相关的信息,最多的两种
- 我的电脑环境是使用.net framework4.5.1,如果在调试过程中调不通请注意我用的是Visual studion 2017,pyt