Python方法之zip

【ESP32开发】——开发环境搭建(VSCode+PlatformIO) 本章内容主要介绍ESP32的开发环境搭建(基于VSCode+PlatformIO)的流程与相应的注意事项,避免开发ESP32止于环境搭建!在项目的维护过程中,可以更好地管理和更新代码、调试问题,并且能够快速适应和采用新的功能、库或硬件平台。:VSCode 的代码提示和自动补全功能,以及 PlatformIO 的管理工具,都能帮助你编写规范、格式良好且易于阅读的代码。:Arduino 框架是一种简单、易用的嵌入式开发框架,适用于快速原型开发和小型项目。需要选择对应自己开发的开发板型号。 阅读详情

一、代码引导

>>> name=('jack','beginman','sony','pcky')
>>> age=(2001,2003,2005,2000)
>>> for a,n in zip(name,age):
    print a,n

输出:
jack 2001
beginman 2003
sony 2005
pcky 2000


再看这一段代码:

all={"jack":2001,"beginman":2003,"sony":2005,"pcky":2000}
for i in all.keys():
    print i,all[i]

输出:
sony 2005
pcky 2000
jack 2001
beginman 2003


发现它们之间的区别么?

最显而易见的是:第一种简洁、灵活、而且能顺序输入。

二、zip()方法

它是Python的内建函数,(与序列有关的内建函数有:sorted()、reversed()、enumerate()、zip()),其中sorted()和zip()返回一个序列(列表)对象,reversed()、enumerate()返回一个迭代器(类似序列)

>>> type(sorted(s))
<type 'list'>
>>> type(zip(s))
<type 'list'>
>>> type(reversed(s))
<type 'listreverseiterator'>
>>> type(enumerate(s))
<type 'enumerate'>


那么什么是zip()函数 呢?

我们help(zip)看看:

>>> help(zip)
Help on built-in function zip in module __builtin__:

zip(...)
    zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
    
    Return a list of tuples, where each tuple contains the i-th element
    from each of the argument sequences.  The returned list is truncated
    in length to the length of the shortest argument sequence.


提示:不懂的一定多help

定义:zip([seql, ...])接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。

>>> z1=[1,2,3]
>>> z2=[4,5,6]
>>> result=zip(z1,z2)
>>> result
[(1, 4), (2, 5), (3, 6)]
>>> z3=[4,5,6,7]
>>> result=zip(z1,z3)
>>> result
[(1, 4), (2, 5), (3, 6)]
>>>


zip()配合*号操作符,可以将已经zip过的列表对象解压

>>> zip(*result)
[(1, 2, 3), (4, 5, 6)]


更近一层的了解:
内容来源:http://www.cnblogs.com/diyunpeng/archive/2011/09/15/2177028.html 

* 二维矩阵变换(矩阵的行列互换)
比如我们有一个由列表描述的二维矩阵
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
通过python列表推导的方法,我们也能轻易完成这个任务
print [ [row[col] for row in a] for col in range(len(a[0]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
另外一种让人困惑的方法就是利用zip函数:
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> map(list,zip(*a))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
 
zip函数接受任意多个序列作为参数,将所有序列按相同的索引组合成一个元素是各个序列合并成的tuple的新序列,新的序列的长度以参数中最短的序列为准。另外(*)操作符与zip函数配合可以实现与zip相反的功能,即将合并的序列拆成多个tuple。
①tuple的新序列
>>>>x=[1,2,3],y=['a','b','c']
>>>zip(x,y)
[(1,'a'),(2,'b'),(3,'c')]

②新的序列的长度以参数中最短的序列为准.
>>>>x=[1,2],y=['a','b','c']
>>>zip(x,y)
[(1,'a'),(2,'b')]

③(*)操作符与zip函数配合可以实现与zip相反的功能,即将合并的序列拆成多个tuple。
>>>>x=[1,2,3],y=['a','b','c']
>>>>zip(*zip(x,y))
[(1,2,3),('a','b','c')]


其他高级应用:

1.zip打包解包列表和倍数
>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> z = zip(a, b)
>>> z
[(1, 'a'), (2, 'b'), (3, 'c')]
>>> zip(*z)
[(1, 2, 3), ('a', 'b', 'c')]

2. 使用zip合并相邻的列表项

>>> a = [1, 2, 3, 4, 5, 6]
>>> zip(*([iter(a)] * 2))
[(1, 2), (3, 4), (5, 6)]

>>> group_adjacent = lambda a, k: zip(*([iter(a)] * k))
>>> group_adjacent(a, 3)
[(1, 2, 3), (4, 5, 6)]
>>> group_adjacent(a, 2)
[(1, 2), (3, 4), (5, 6)]
>>> group_adjacent(a, 1)
[(1,), (2,), (3,), (4,), (5,), (6,)]

>>> zip(a[::2], a[1::2])
[(1, 2), (3, 4), (5, 6)]

>>> zip(a[::3], a[1::3], a[2::3])
[(1, 2, 3), (4, 5, 6)]

>>> group_adjacent = lambda a, k: zip(*(a[i::k] for i in range(k)))
>>> group_adjacent(a, 3)
[(1, 2, 3), (4, 5, 6)]
>>> group_adjacent(a, 2)
[(1, 2), (3, 4), (5, 6)]
>>> group_adjacent(a, 1)
[(1,), (2,), (3,), (4,), (5,), (6,)]

3.使用zip和iterators生成滑动窗口 (n -grams) 
>>> from itertools import islice
>>> def n_grams(a, n):
...     z = (islice(a, i, None) for i in range(n))
...     return zip(*z)
...
>>> a = [1, 2, 3, 4, 5, 6]
>>> n_grams(a, 3)
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)]
>>> n_grams(a, 2)
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
>>> n_grams(a, 4)
[(1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6)]

4.使用zip反转字典
>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m.items()
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]
>>> zip(m.values(), m.keys())
[(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd')]
>>> mi = dict(zip(m.values(), m.keys()))
>>> mi
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}


原文链接:http://www.cnblogs.com/BeginMan/archive/2013/03/14/2959447.html

《网络安全自学教程》- 防火墙原理分析与Windows防火墙使用配置 防火墙分类及原理,Windows开启防火墙,Windows防火墙添加策略, 阅读详情

相关推荐

高精度有源积分器设计:基于罗氏线圈的电流测量方案解析

在电力系统保护、工业自动化及高精度计量领域,电流的非接触式精确测量是核心需求。传统电流互感器存在磁芯饱和、频带受限等局限,难以应对现代电力电子设备产生的复杂波形。罗氏线圈作为一种空心电流传感器,凭借其宽频带、高线性度及无饱和风险的优势,成为理想解决方案。其工作原理基于法拉第电磁感应定律,输出信号与被测电流的导数成正比,因此必须通过积分运算恢复原始电流波形。积分器的精度、稳定性及动态响应直接决定了整个测量系统的性能上限。一个设计精良的有源积分器能有效解决直流漂移、相位误差及噪声放大等挑战,在继电器保护、断路器

weixin_30036289的博客 313

VS C++调试技巧:把调试信息输出到输出窗口

在Windows C++开发中,调试信息输出是定位逻辑问题的关键。除了printf和日志文件,开发者常忽略一个高效通道——调试器输出窗口。其底层依赖OutputDebugString API,将字符串发送给调试器,不落盘、不打断运行。相比日志文件,它实时性强、性能开销低;相比弹窗,它不影响界面流程。封装支持格式化输出的LogDebug函数,可同时输出到调试器与文件,并支持多线程ID标识。适用于GUI程序、服务程序、插件及复杂多线程场景。掌握此技巧,能大幅提升Visual Studio下C++程序的调试效率。

weixin_34405354的博客 347

考完CAIE认证一年后,谈谈它对我的职业的真实影响(干货)

大门,让面试官愿意给你机会,但进门之后的发展,还得靠持续的学习和项目积累。说实话,当时的心态是“考都考了,总比闲着强”,对这张证书能带来什么实际价值,心里并没有底。这种广泛的生态认可,让这张证书的“流通性”变得很强——无论跳槽还是在原公司发展,它都是一个被市场验证过的能力证明。对我个人而言,虽然没跳槽,但在年度调薪和争取内部项目时,持证经历也成了一个有力的“加分项”。这种巨大的薪资差距,恰恰反映了市场对“能落地、懂技术”的深度人才的渴求。考完证后的这一年,我看到了两条清晰的职业发展路径在自己面前展开。

qq_16014487的博客 814

python3 zip()和zip(*)

刚刚做完leetcode14最长公共前缀,里面一个解答涉及到zip(*),看了很多讲解,感觉都是错误的。以下是自己实验的结果: zip(a,b,c……):针对多个可迭代对象a,b,c…压缩成n个元组,元组数量n等于min(多个可迭代对象a,b,c…中最小的长度) zip(*a):针对单个可迭代对象压缩成n个元组,元组数量n等于min(a中元素的最小长度) leetcode14中的操作: 结论...

weixin_43744594的博客 621

矢量量化的基本原理:高效数据压缩与信息检索的关键矢量量化(Vector Quantization,简称VQ)是一种数据压缩和信

此外,在矢量量化过程中,可能会引入一定的信息损失,对一些精细特征的表示可能存在一定的误差。它通过将高维数据映射到低维码本空间中,并将相似的数据映射到相同的码本向量中,实现对数据的高效表示和存储。最重要的是,矢量量化可以用于数据的检索和分析,提供了高效的数据查询和处理手段。通过使用码本索引,我们可以高效地存储和检索大量的数据。在图像处理中,矢量量化可以用于图像压缩,将复杂的图像数据转化为较少的码字,实现图像的存储和传输。矢量量化通过将连续的高维数据分割并映射到有限的码本集合中,实现数据的离散表示和压缩。

m0_70886513的博客 1372

VUE3如何使得大屏自适应的几种方法?

16:9。

weixin_42711805的博客 1万+

Python的zip()函数和zip(*)函数详解。

zip()函数 创建一个聚合了来自每个可迭代对象中的迭代器。 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 返回一个元组的迭代器,其中的第i个元素来自于可迭代元素的第i个元素。 例子: # zip函数 a = [1, 3, 5, 7, 9] b = [2, 4, 6, 8, 10] print(zip(a, b)) print(list(zip(a, b))) 输出: <zip object at 0x12844128> [(1

Kinght_123的博客 2078

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 332

Python3中的zip()函数和*符号

zip()函数 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 利用*操作符,可将元组表示为列表 &gt;&gt;&gt; a = [1,2,3] &gt;&gt;&gt; b = [1,2,3,4,5,6] &gt;&gt;&gt; A = zip(a,b) #type(A):&lt;class 'zip'&gt; (1, 1),(...

沙哈 640

电路设计仿真软件:Mentor Graphics_(11).MentorGraphics软件操作与技巧

/ 定义自定义仿真命令// 加载设计文件// 运行仿真// 主函数return 1;return 0;// 自定义设计检查// 获取设计中的所有模块// 遍历所有模块// 检查模块名称是否符合规范if (!// 检查模块中的所有引脚if (!// 主函数main() {通过本节的学习,您应该已经掌握了如何在 Mentor Graphics 中进行二次开发,包括使用 Tcl、C++ 和 Python 进行基本和高级操作。

kkchenjj的博客 1637

2.0 电子凸轮 西门子1500电子凸轮使用研究1

本文研究了S7-1500T电子凸轮同步控制技术,通过仿真实验得出以下结论:1)通过比例系数可调整凸轮曲线形状;2)解除同步需调用从轴其他运动指令;3)详细阐述了凸轮同步的5个实施步骤。重点分析了三种同步类型(主值距离同步、动态参数同步和直接同步)的特点及应用场景,并探讨了缩放系数、偏移量等参数对凸轮曲线的影响。同时介绍了凸轮应用模式及常见异常处理方法,为工程应用提供了重要参考。

qq_34047402的博客 809

python中zip函数的琐记

定义:zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了: &g...

weixin_33719619的博客 228

模型训练篇 | 手把手教你使用ResNet训练自己数据集和推理,ResNet50通用物体分类识别,含完整代码和数据集,全网最详细教程

手把手教你使用ResNet训练自己数据集和推理,ResNet50通用物体分类识别,含完整代码和数据集,全网最详细教程。本篇文章将带你学习 ResNet50 模型构建、ResNet50训练自己数据集、数据集处理、推理和验证、模型剪枝与模型改进等。 本篇教程适配各种分类识别任务,可以说是一个通用的教程,只需修改自己的数据集即可完成自己领域的任务和系统实现。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 720

python的zip方法

python的zip方法zip(attr_key, attr_val)zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。>>>a = [1,2,3]>>> b = [4,5,6]&gt...

bangyonggui4360的博客 278

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python中的zip方法详解

         有时我们有这样的需求,想从两个列表中分别迭代元素,这时我们就可以使用python中的zip方法,事例如下: l1 = [1,2,3,4,5] l2 = ['a','b','c','d','e','f'] for x,y in zip(l1,l2): print(x,y) 结果: 1 a 2 b 3 c 4 d 5 e          zip(a,b)方法的工作原理是创

weixin_43697214的博客 8374

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

zip方法-python

zip方法:传入的参数只有是序列就行,意思是说可以是列表、元组都可以 #1、先看列表如何取最大值与最小值 li=[87.50,-1,-21,365,987] print(max(li)) print(min(li)) #结果:987 和 -21 #2、zip方法返回的是object对象,因此可以用list转化 print(list(zip(("t1","t2","t3"),(1,2,3))...

你若安好是晴天的博客 780

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

python 解压 zip 方法

Python 解压 ZIP 文件的方法 在日常编程中,处理文件的任务是非常常见的。尤其是当涉及到压缩文件格式时,ZIP文件因其良好的压缩性能和广泛的使用平台而成为一种流行的选择。作为Python程序员,解压缩ZIP文件是一个重要的技能。本文将为您介绍如何使用Python解压ZIP文件,并给出详细的代码示例和相关知识点。 1...

weixin_33458169的博客 300

python中zip方法的妙用

python中zip方法的妙用 将两个列表打包,转换成元祖列表 input: list1 = ['q','w','e'] list2 = [1,2,3] a = list(zip(list1,list2)) print(a) out: [('q', 1), ('w', 2), ('e', 3)] 将两个列表打包,转换成键值对的形式 list1 = ['q','w','e'] list2 = [1,2,3] a = dict(zip(list1,list2)) print(a) out: {'q

梦途的测开笔记 253

python zip()和zip(*)方法

欢迎关注本人博客:云端筑梦师 描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。 语法 zip([iterable, ...]) 参数 iterabl -- 一个或多个迭代器; 返回值 返回元组列表。 实例 示例...

134

Python中zip函数的使用方法

zip()函数是Python的内置函数,将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的list(Python3为了节约内存,zip()返回的是zip对象,需要通过list()手动转换成列表)如果zip()没有可迭代的元素,则它将返回一个空的迭代器,如果每个迭代器的元素个数不一致,则返回的列表长度与最短的一致。利用 * 号操作符,可以将元组解压为列表。

weixin_43886282的博客 1万+

使用Python解压zip、rar文件的方法

解压 zip 文件 基本解压操作 import zipfile ''' 基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]]) mode:可选 r,w,a 代表不同的打开文件的方式;r 只读;w 重写;a 添加 compression:指出这个 zipfile 用什么压缩方法,默认是 ZIP_STORED,另一种选择是 ZIP_DEFLATED; allowZip64:bool型变量,当设置为True时可以创建大于 2G 的 zip

python学习者的博客 2540

Python 操作 ZIP 文件的基本方法

通过 Python 的zipfile模块,我们可以非常方便地创建、读取和提取 ZIP 文件。无论是开发工具还是个人项目,掌握这些基本的操作方法都能大大提高效率。希望本文能为你提供实用的帮助!```

2501_91116527的博客 237

Python基础(zip方法)

zip函数:   描述:将zip函数中的两个可迭代对象参数按对应索引值进行匹配组合,得到zip对象。(拉链式函数)   zip函数简单应用如下: 1 #-----------------zip函数----------------- 2 3 #第一种zip参数两个可迭代对象元素个数相同 4 list1=["a","b","c","d","e"] 5 list2=[1,2...

weixin_30343157的博客 124

zip方法在Python 2 和Python 3中的不同

Python 2 的代码演示: $ python2 &gt;&gt;&gt; a = zip((1, 2), (3, 4)) &gt;&gt;&gt; a [(1, 3), (2, 4)] # 可以看到这里返回的是一个list Python 3 的代码演示: $ python3 &gt;&gt;&gt; a = zip((1, 2), (3, 4)) &gt;&gt;&gt; a &l...

三人行必有我师的博客 458

python zip函数使用方法

Python的zip函数 zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例: 1.示例1: x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) print (xyz) 运行的结果是: [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 从这个结果可以看出zip函数的基本运作方式。 2.示例2: x = [1, 2, 3] y = [4, 5, 6, 7] x

weixin_46085511的博客 521

Python的zip和exe安装方法

我用#优快云#这个app发现了有技术含量的博客,小伙伴们求同去《Python的zip和exe安装方法》, 一起来围观吧 https://blog.youkuaiyun.com/u012060033/article/details/105449881?utm_source=app

VCMamba的博客 390
上一篇: Python模块之os
下一篇: 5.机器学习实战之Logistic回归
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值