当前位置: 首页 > backend >正文

函数的定义与使用(python)

lst[:]是传入lst的拷贝。改变它对原始lst没有任何影响。

*list一个*的元素在函数体内会被当成一个元组。

以下是对图中 Python 代码的详细解释:

代码总体功能

这段代码定义了一个生成器函数 getItem ,用于依次返回多个列表中的元素。然后通过循环遍历调用该生成器函数的结果,将元素逐个打印出来。

代码具体分析

  1. 注释
    # 一个简单的生成器,依次返回多个列表中的元素 ,这是一个单行注释,用于说明下面定义的 getItem 函数的功能,即它是一个生成器函数,作用是依次获取多个列表里的元素。
  2. 生成器函数定义
    def getItem(*lists):
    • 函数定义语法def 是 Python 中定义函数的关键字,getItem 是函数名,(*lists) 表示函数接受任意数量的位置参数,这些参数会被收集成一个元组,在函数内部可以像处理普通元组一样处理 lists
    • 函数功能:这个函数的目的是创建一个生成器,用于遍历多个列表中的元素。
  1. 函数内部循环结构
for lst in lists:for item in lst:yield item
- **外层循环**:`for lst in lists:` ,这里 `lists` 是函数 `getItem` 接收到的包含多个列表的元组,该循环用于逐个遍历这些列表,每次迭代 `lst` 会取到 `lists` 中的一个列表。
- **内层循环**:`for item in lst:` ,这个循环用于遍历当前 `lst` 列表中的每个元素,`item` 会依次取到列表中的每个值。
- **`yield` 关键字**:`yield item` 是生成器的关键所在。`yield` 会暂停函数的执行,并返回 `item` 这个值。当生成器函数被调用并迭代时,每次遇到 `yield` ,函数的状态会被保存,下一次迭代时会从暂停的地方继续执行,而不是从头开始。这使得生成器可以按需生成值,而不是一次性生成所有值并占用大量内存。 
  1. 使用生成器遍历列表元素
for item in getItem([1,2], ['a','b']):print item
- **调用生成器函数**:`getItem([1,2], ['a','b'])` 调用了 `getItem` 生成器函数,并传入了两个列表 `[1,2]` 和 `['a','b']` 作为参数。此时函数并不会立即执行完毕,而是返回一个生成器对象。
- **遍历生成器**:`for item in...` 循环开始迭代这个生成器对象。每次迭代时,生成器函数 `getItem` 会从上次 `yield` 暂停的地方继续执行,直到再次遇到 `yield` 返回一个新的值,这个值会被赋给 `item` ,然后 `print item` 语句将其打印出来。最终依次打印出 `1`、`2`、`a`、`b` 。

这段代码很好地展示了 Python 中生成器函数的定义和使用方式,利用生成器可以更高效地处理大量数据,避免一次性将所有数据加载到内存中。

http://www.xdnf.cn/news/2033.html

相关文章:

  • windows server安装winget
  • 【进阶】C# 泛型知识点整理归纳
  • Git命令行中vim的操作
  • 9.ArkUI List的介绍和使用
  • 云+AI双轮驱动,亚马逊云科技加速中国企业出海新浪潮
  • OCR定制识别:解锁文字识别的无限可能
  • Windows 安全设置不允许下载文件
  • SpringCloud基于Eureka和Feign实现一个微服务系统
  • Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
  • B站C语言课程笔记3
  • 《AI大模型趣味实战》基于RAG向量数据库的知识库AI问答助手设计与实现
  • 开发小程序后端用PHP好还是Java哪个好?
  • 【N8N】Docker Desktop + WSL 安装过程(Docker Desktop - WSL update Failed解决方法)
  • 大内存生产环境tomcat-jvm配置实践
  • 同一页面下动态加载内容的两种方式:AJAX与iframe
  • Git 进阶使用指南
  • 【深度强化学习 DRL 快速实践】策略梯度算法 (PG)
  • 图论---染色法(判断是否为二分图)
  • PH热榜 | 2025-04-25
  • 【物联网】基于LORA组网的远程环境监测系统设计(ThingsCloud云平台版)
  • Feign接口调用失败降级机制
  • 力扣DAY68 | 热100 | 寻找两个正序数组的中位数
  • 【数据可视化-33】病毒式社交媒体潮流与用户参与度可视化分析
  • 入侵检测系统(IDS)与入侵防御系统(IPS):功能对比与部署实践
  • QT开发技术【QT实现桌面右下角消息】
  • 通过模仿学习实现机器人灵巧操作:综述(上)
  • 使用 AutoGen 与 Elasticsearch
  • 6.ArkUI Row的介绍和使用
  • 笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)
  • 计算机视觉各类任务评价指标详解