Python学习记录 ZIP迭代 & 推导式创建序列

【python】(09)理解Python中的zip()和zip(*iterable) zip()是打包函数,将输入的多个序列中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。zip(*)是解压函数,将输入的可迭代对象,解压成多个独立的序列。 阅读详情

2022.07.17 DAY17

1. 使用zip()并行迭代

  • 通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列"用完"时就会停止。

  • 测试代码:

      # zip
      def test():
          names = ("First", "Second", "Third", "Fourth")
          ages = (28, 26, 20, 25)
          jobs = ("老师", "程序员", "学生", "公务员")
    
          for name, age, job in zip(names, ages, jobs):
              print("{0}--{1}--{2}".format(name, age, job))
    
    
      if __name__ == '__main__':
          test() 
    
  • 执行结果:

      First--28--老师
      Second--26--程序员
      Third--20--学生
      Fourth--25--公务员
    

2. 推导式创建序列

1. 列表推导式
  • 列表推导式生成列表对象,语法如下:

    1. [表达式 for item in 可迭代对象]
    2. [表达式 for item in 可迭代对象 if 条件判断]
  • 代码测试:

      # 列表推导式
      def test2():
          a = [x for x in range(1, 5)]
          b = [x * 2 for x in range(1, 5)]
          c = [x * 5 for x in range(1, 20) if x % 5 == 0]
    
          print(a)
          print(b)
          print(c)
    
    
      if __name__ == '__main__':
          test2()
    
  • 执行结果:

      [1, 2, 3, 4]
      [2, 4, 6, 8]
      [25, 50, 75]
    
2. 字典推导式
  • 字典推导式生成字典对象,格式如下:

    1. {key_expression : value_expression for 表达式 in 可迭代对象}
    2. 类似于列表推导式,字典推到也可以增加if条件判断、多个for循环。
  • 代码测试:

      # 字典推导式
      def test3():
          # 统计文本中字符出现的次数
          myWords = "I Love You, File, Edit, All Right."
          char_count = {c: myWords.count(c) for c in myWords}
          print(myWords)
          print(char_count)
    
    
      if __name__ == '__main__':
          test3()
    
  • 执行结果:

      I Love You, File, Edit, All Right.
      {'I': 1, ' ': 6, 'L': 1, 'o': 2, 'v': 1, 'e': 2, 'Y': 1, 'u': 1, ',': 3, 'F': 1, 'i': 3, 'l': 3, 'E': 1, 'd': 1, 't': 2, 'A': 1, 'R': 1, 'g': 1, 'h': 1, '.': 1}
    
3. 集合推导式
  • 集合推导式生成集合,和列表推导式的语法格式类似:

    1. [表达式 for item in 可迭代对象]
    2. [表达式 for item in 可迭代对象 if 条件判断]
  • 代码测试:

      # 集合推导式
      def test4():
          a = {x for x in range(1, 100) if x % 9 == 0}
          print(a)
    
    
      if __name__ == '__main__':
          test4()
    
  • 执行结果:

      {99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
    
4. 生成器推导式(生成元组)
  • 元组是没有推导式的。

  • 一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了。

  • 代码测试:

      # 生成器推导式 生成元组
      def test5():
          gnt = (x for x in range(1, 100) if x % 9 == 0)
          for x in gnt:
              print(x, end=' ')
          for x in gnt:
              print(x, end=' ')
    
    
      if __name__ == '__main__':
          test5()
    
  • 执行结果:

      9 18 27 36 45 54 63 72 81 90 99 
    
学习记录-python序列 sorted(iterable, key=None, reverse=False) 对所有可迭代的对象进行排序操作。 iterable – 可迭代对象。 key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。 返回重新排序的列表。 x = [-8, 99, 3, 7, 83] print(sorted(x)) # 阅读详情

相关推荐

Python专题——详解enumerate和zip

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第7篇文章,我们继续介绍迭代相关。 enumerate 首先介绍的是enumerate函数。 在我们日常编程的过程当中,经常会遇到一个问题。 在C语言以及一些古老的语言当中是没有迭代器这个概念的,所以我们要遍历数组或者是容器的时候,往往只能通过下标。有了迭代器之后,我们遍历的过程方便了很多,我们可以直接用一个变量...

TechFlow的博客 613

python 推导式(列表推导式、元组推导式、字 典推导式和集合推导式)以及zip 函数及用法(带示例)

python 推导式(列表推导式、元组推导式、字 典推导式和集合推导式)以及zip 函数及用法(带示例)一、推导式1.概念2.Python 列表推导式Python 元组推导式Python 字典推导式二、zip 函数及用法1.概念2.用法 一、推导式 1.概念 推导式(又称解析器),是 Python 独有的一种特性。使用推导式可以快速生成列表、元组、字典以及集合类型的数据,因此推导式又可细分为列表推导式、元组推导式、字典推导式以及集合推导式。 2.Python 列表推导式 列表推导式可以利用 range 区间

qq_42585108的博客 2287

Python中的zip函数是用于同时迭代多个可迭代对象,并将它们的元素按顺序打包成元组的函数。本文将详细介绍zip函数的用法,并提供相应的源代码示例。

通过这些示例,我们可以看到zip函数是一个非常有用的工具,可以方便地同时迭代多个可迭代对象。在Python中,zip函数可以接受任意数量的可迭代对象作为参数,例如列表、元组或字符串等。它将迭代对象中相同位置的元素打包成元组,并返回一个新的迭代器,该迭代器生成这些元组。通过使用zip函数,我们将它们的元素按顺序打包成元组,并使用for循环遍历打包后的元组。zip函数将以最短的可迭代对象为准,忽略超出其长度的部分。是一个或多个可迭代对象,可以是列表、元组、字符串或其他可迭代对象。通过在zip函数前加上。

uote_e的博客 225

Python zip() 函数

描述 zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。 zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。 语法 zip 语法: zip([iterable, ...]) 参数说明: ite.

Drug discovery 2万+

基于PLC的全自动洗衣机控制系统+控制程序

本设计使用PLC控制系统替换了传统的继电器控制系统,实现了全自动洗衣机在硬件方面的提升,丰富了全自动洗衣机在软件方面的功能,提高了全自动洗衣机的洗衣效率,基本可以满足用户的洗衣需求。

zzzz114231的博客 8956

UE5多人联机实战:从零搭建LAN游戏房间(含UMG界面配置)

本文详细介绍了如何在UE5中从零开始搭建一个完整的局域网(LAN)多人游戏房间系统。内容涵盖项目基础配置、UMG主菜单设计、会话创建与搜索的核心实现,并重点解析了创建会话的关键参数配置与常见陷阱,帮助开发者快速掌握UE5多人联机开发的核心流程。

weixin_29001683的博客 690

【Python】深入了解`zip()`函数:高效地组合迭代对象

Python中的zip()函数是一个非常有用的工具,它能够高效地组合多个可迭代对象。在本篇文章中,详细介绍了zip()函数的基本用法、处理不同长度的可迭代对象、解压缩序列、结合for循环使用、与字典结合使用、处理嵌套结构、与运算符结合使用以及实际应用示例。通过掌握zip()函数,可以使代码更加简洁、高效,提升编程能力。python 错误记录python 笔记数据结构。

lph159的博客 1780

【一文读懂】卫星轨道的轨道参数(六根数)和位置速度矢量转换及其在终端距离、相对速度和多普勒频移计算中的应用

本文首先介绍了卫星轨道的六根数参数:半长轴 a、偏心率 e、轨道倾角 i、升交点赤经 Ω、近地点幅角 ω 以及真近点角 ν,并探讨了如何利用这些参数计算卫星与地面终端之间的距离、相对速度及由此产生的多普勒频移。利用开普勒运动公式计算当前瞬间的轨道半径;根据真近点角 ν 在围心坐标系中计算位置矢量和速度矢量;利用旋转矩阵(依次旋转 ω、i、Ω)将围心坐标系的状态矢量转换到地心惯性坐标系;最终结合地面终端信息,计算卫星与终端的欧氏距离、沿视线的相对速度及多普勒频移。

u011376987的博客 9498

深入理解Python中zip函数的迭代特性,拓展你的编程思维

本文深入解析了Python中zip函数的迭代特性,帮助你更好地理解该函数的工作原理和使用方法。我们将讨论zip函数与不同长度的列表、迭代器对象等的配合使用,探索其在数据处理、算法设计等方面的应用,拓展你的编程思维。

li2437948121的博客 558

【隐私计算】从本地加法到在线乘法:Beaver Triple如何重塑算术秘密分享的运算效率

本文深入探讨了Beaver Triple在算术秘密分享中的关键作用,显著提升了隐私计算中的乘法运算效率。通过对比加法与乘法的实现差异,详细解析了Beaver Triple的预处理机制和在线计算优化,展示了其在减少通信量和计算时间方面的革命性突破。

weixin_29227585的博客 436

笔记——Oracle19c

Oracle阅读笔记

weixin_63819458的博客 1349

Python进阶:zip函数的多序列并行遍历

本文介绍了Python中zip函数的多序列并行遍历技术,主要内容包括: 核心概念:zip函数可以同时遍历多个序列,将对应位置的元素组合成元组,是Python数据处理的重要工具。 技术原理:详细解析了zip函数的实现机制,包括惰性计算特性和内存优化方法。 实践应用: 基础用法:展示了zip函数的基本语法和简单示例 进阶应用:包括处理不等长序列、与enumerate结合使用等技巧 常见问题:总结了使用过程中可能遇到的典型错误及其解决方案,如序列长度不一致处理、内存占用优化等。 应用场景:列举了zip函数在数据清

未来 95% 的 AI 应用将变得隐形,广泛融入日常生活。 8234

Datawhale~数据挖掘实践之序列问题处理~天池·资金流入流出预测-挑战Baseline~Day01~数据探索与分析

写在前面✍ 本系列笔记基于天池平台上“资金流入流出预测-挑战Baseline”学习赛,记录如何完整的打一次数据挖掘类比赛。同时,该比赛属于序列建模问题,希望学习完成这个任务,可以对序列问题的处理有一定的独立思考能力和实践操作能力,可以将所学理论,用编码的形式和实际的问题得到深入。 第一篇,EDA Content: 初步了解赛题及数据 1.1 任务 1.2 用户基本信息数据 1.3 用户申购赎回数据 1.4 收益率表 1.5 银行间拆借利率表 1.6 提交格式 1.7 评分指标 EDA 1 初.

小卜妞的博客 2358

【新手python程序员必须明白的真相】140.新手python程序员必须明白的zip函数:并行迭代多个序列的利器

编程就像雕刻时光,每一行代码都是时光的印记。当你下次准备写下range(len())时,不妨停下来问问自己:“这里用enumerate会不会更优雅?” 记住,好的代码不仅要能运行,更要像诗一样让人赏心悦目。Python世界的大门已经为你打开,enumerate只是万千法宝中的一件。保持这份对代码美感的热爱,继续探索更广阔的编程天地吧!当你回首初学之路,会发现正是这些看似小的优化技巧,铺就了你成为真正Pythonista的进阶之路。

1146

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

上位机介绍:C# 开发者的必知基础

上位机是指在工业控制系统中,位于上层、负责人机交互和数据管理的计算机/软件,与“下位机”(PLC、传感器、变频器、单片机等硬件设备)相对应,核心是“向下通信控制设备,向上展示交互数据”。下位机:一线干活的“工人”(执行采集、控制指令);上位机:指挥管理的“办公室人员”(发指令、看数据、做报表)。C#开发者掌握上位机开发的核心是“通信+UI+稳定性基础层:搞懂WinForms/WPF基础、串口/Modbus通信,能实现核心功能;进阶层:掌握分层设计、异步编程、工业级容错(断线重连、数据校验);

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1559

python_zip()并行迭代_推导式_ZHOU125disorder_

zip() 我们可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列"用完"时就会停止 name = ("卡卡西", "我爱罗", "波风水门") age = (30, 24, 28) jobs = ("6代火影", "4代风影", "4代火影") for name, age, jobs in zip(name, age, jobs): print("{0}--{1}--{2}".format(name, age, jobs)) # format为字符串的格式化的方法 卡卡

写代码的薛的博客 303

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Python迭代器iter及生成器介绍

python iter( )函数介绍

weixin_46713695的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

第三章 Python序列结构

在上一章Python内置对象中,我们知道,1个数据是存储在变量当中的,而1个变量也只能存储1个数据,当想要批量存储数据时,大量定义变量明显是不现实的,会占用大量的内存空间,且代码的复杂度也会提高,因此,Python提供了序列结构,用来存储大量的数据。Python序列属于容器类结构,用于包含大量数据,类似于其他语言中的数组,但提供了更加强大的功能。常用的序列结构有列表,元组,字典,集合,字符串等。而这些序列结构,根据一些规则可以进行简单的分类。

Nightmare1000的博客 2136

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python并行迭代进阶:从zip到zip_longest的实战场景解析

本文深入解析Python中zip和zip_longest的并行迭代技术,通过实战案例展示如何高效处理多个数据序列。从基础用法到进阶技巧,涵盖不等长序列处理、数据解压缩及性能优化,帮助开发者提升代码简洁性和数据处理效率。特别适合需要处理复杂数据结构的Python开发者。

weixin_30938149的博客 307

《Effective Python》第三章 循环和迭代器——用 zip 并行处理迭代器

本文基于对该章节的学习与理解,结合实际案例和拓展思考,深入剖析 zip 的工作原理、常见误区以及高级用法,帮助你更好地掌握这个 Python 编程中的“利器”。

企业级后端与 AI 应用开发双线探索 1268

python 推导式和迭代器、生成器

1、常用推导式 推导式是从一个或者多个迭代器快速简洁创建数据结构的一种方法。 1.1 _ 列表推导式 最简单的形式: [exprssion for item in iterable] 示例: number_list = [x for x in range(1,10)] 加上条件表达式的形式:[exprsssion for i...

weixin_30808693的博客 135

Python zip()函数深度解析:从并行迭代到高效数据处理

在Python编程中,迭代器是处理序列数据的核心概念,它通过惰性求值机制实现内存高效的数据流处理。其原理在于按需生成元素,而非一次性加载全部数据,这为处理大规模或无限序列提供了可能。这一技术价值体现在提升代码性能与可组合性上,是构建高效数据处理管道的基础。在实际应用场景中,并行迭代是常见需求,需要同步遍历多个相关数据结构。Python内置的zip()函数正是实现这一模式的优雅工具,它通过将多个可迭代对象中对应位置的元素配对,生成元组迭代器。理解zip()的惰性求值特性与迭代器本质,能帮助开发者避免常见陷阱,

weixin_34218890的博客 421

Python基础知识学习记录 2021——1020(使用 zip()并行迭代)

文章目录064使用 zip()并行迭代 064 使用 zip()并行迭代 使用 zip()并行迭代我们可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。 【操作】测试 zip()并行迭 names = ("孙悟空","猪八戒","沙和尚","白龙马") ages = (1000,900,800,700) works = ("开路","牵马","挑担") for name,age,work in zip(names,ages,works): print("{0

Lime_Tr的博客 151

Python map、zip、filter深度解析:从迭代器机制到工程避坑

map、zip、filter是Python函数式编程的三大核心迭代器工具,其本质并非语法糖,而是基于惰性求值与单次遍历特性的声明式数据处理协议。理解它们需穿透表层用法,掌握底层迭代器行为、真值判定逻辑(如filter(None, ...)的bool()隐式调用)、多序列对齐哲学(zip的截断设计)及内存友好优势。这些机制在电商数据清洗、物联网传感器对齐、动态权限过滤等真实场景中,直接决定代码的健壮性、可维护性与大数据吞吐能力。本文聚焦map对象不可索引、zip迭代器耗尽、filter真值陷阱等高频生产问题,

weixin_29969209的博客 247

Python zip()函数深度解析:从并行迭代到数据处理的进阶应用

在Python编程中,迭代器是处理序列数据的核心概念,它通过惰性求值机制实现了内存高效的数据流处理。其原理在于仅在需要时生成元素,而非一次性加载全部数据,这为处理大规模数据集提供了基础。这一特性在数据对齐与合并场景中展现出极高的技术价值,尤其是在多源数据整合、矩阵运算和流水线处理时。Python内置的zip()函数正是基于迭代器协议实现的经典工具,它遵循最短匹配原则,将多个可迭代对象按位置配对,生成一个惰性迭代器。结合itertools.zip_longest,开发者可以灵活应对长度不一的序列,实现从并行迭

weixin_30835649的博客 439
上一篇: Vue学习记录 模板语法
下一篇: Python学习记录 循环画图
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值