Python代码阅读(第29篇):使用初始化种子和迭代函数生成列表

本文中的代码实现使用一个初始化种子和一个迭代函数通过嵌套函数迭代初始化种子,从而生成一个列表。

[En]

The code implementation read in this article uses an initialization seed and an iterative function to iterate over the initialization seed through nested functions, resulting in a list.

unfold

def unfold(fn, seed):
  def fn_generator(val):
    while True:
      val = fn(val[1])
      if val == False: break
      yield val[0]
  return [i for i in fn_generator([None, seed])]

EXAMPLES
f = lambda n: False if n > 50 else [-n, n + 10]
unfold(f, 10) # [-10, -20, -30, -40, -50]

unfold函数接收一个迭代函数和一个初始化种子,生成一个列表。迭代函数 fn接受一个参数 seed,并且必须总是返回一个有两个元素的列表 [value,nextSeed],或者返回 False来终止生成器函数。 unfold函数内部定义生成器 fn_generator。该生成器使用 while循环调用迭代器函数并产生值,直到它返回False。最后使用列表推导式返回生成器函数产生的列表。

生成器是一个用于创建迭代器的简单而强大的工具。 它的写法类似于标准的函数,但当它们要返回数据时会使用 yield语句。 每次在生成器上调用 next()时,它会从上次离开的位置恢复执行(它会记住上次执行语句时的所有数据值)。

fn_generator是一个生成器,在其中 while语句的最后,使用 yield返回当前 while循环中 val[0]的值。下一次调用的时候,会继续下一个循环,继续返回下一个循环中 val[0]的值,直到迭代函数 fn返回 false结束 while循环。

unfold函数的 return语句中,使用列表推导式不断调用 fn_generator生成器,直到生成器退出循环,形成一个列表并返回。

Original: https://www.cnblogs.com/felixz/p/15502529.html
Author: FelixZ
Title: Python代码阅读(第29篇):使用初始化种子和迭代函数生成列表

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/510868/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 设计模式(Python语言)—-组合模式

    推荐文章 很多小伙伴都发现了,用户自主「申请上首页」的按钮取消了,那博主们写的文章还有上首页曝光的机会吗?我们的回答是”当然有!!!”虽然我们取消了上首页申…

    Python 2023年5月24日
    082
  • 二叉树的直径和最大距离问题

    原文地址: 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径(边)长度中的最大值。 主要思路: 定义如下数据结构 public stat…

    Python 2023年10月20日
    040
  • pygame教程1

    pygame是python中的第三方库,需要自行下载。 pip安装 1.打开计算机运行窗口。2.输入cmd。3.如果你的python版本是2. ,则在命令行里输入:pip inst…

    Python 2023年9月20日
    024
  • Pandas DataFrame数据遍历的三种方式 iteritems iterrows itertuples

    对Pandas对象进行基本迭代的行为取决于类型。在遍历一个Series时,它被视为类似数组,并且基本迭代产生这些值。其他数据结构(如DataFrame和Panel)遵循类似于字典的…

    Python 2023年8月16日
    052
  • 线性代数[向量]

    系列文章目录 第一章 线性代数[初等变换(一)] 第二章 线性代数[初等变换(二)] 第三章 线性代数[初等变换(三)] 第四章 线性代数[矩阵的秩] 提&a…

    Python 2023年11月5日
    038
  • Ubuntu22.04 安装配置流水账

    前两天为了测一个CH340的bug, 装了三遍20.04. bug解决完, 心想反正也要重新装各种软件, 不如直接装22.04吧. 把涉及的安装记录一下方便将来参考. 选项一: 使…

    Python 2023年10月21日
    069
  • 上周热点回顾(10.10-10.16)

    热点随笔: · 斗鱼 H5 直播原理解析,它是如何省了 80% 的 CDN 流量? (羽月技术)· 超强的纯 CSS 鼠标点击拖拽效果 (ChokCoco)· 10分钟教你写一个数…

    Python 2023年10月18日
    049
  • Windows-安装dlib库(亲测绝对可以,超详细)

    dlib 是一个C++的库,安装在python下,用来做人脸识别和检测。 如果直接在终端下直接使用,或者直接在pycharm里面添加这个包 pip install dlib 直接报…

    Python 2023年8月1日
    0139
  • .net版OCR紧随PP-OCRv3重磅发布

    PaddleOCRSharp是一个基于PaddleOCR的C++代码修改并封装的.NET的工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能,同时针对小图识…

    Python 2023年10月29日
    055
  • nvidia-smi详解

    nvidia-smi详解 大多数用户都知道如何检查他们的 CPU 的状态,查看有多少系统内存可用,或者找出有多少磁盘空间可用。相比之下,从历史上看,密切关注 GPU 的运行状况和状…

    Python 2023年8月1日
    063
  • Django配置redis缓存

    Django配置redis缓存 (1)首先安装django-redis pip install django-redis (2)在settings中配置如下所示: 改配置仅为示例,…

    Python 2023年6月11日
    0140
  • Python索引index常用的8种操作

    原始数据为 csv 文件。 data ”’ date,temperature,humidity 07/01/21,95,50 07/02/21,94,55 07/03/21,94…

    Python 2023年8月7日
    046
  • scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items Define here the models for your scraped ite…

    Python 2023年10月5日
    061
  • 微信小程序 | 小程序开发

    🖥️ 微信小程序专栏:小程序开发 初级知识🧑‍💼 个人简介:一个不甘平庸的平凡人🍬✨ 个人主页:CoderHing的个人主页🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️👉 …

    Python 2023年10月7日
    050
  • Python数据可视化、五

    一、绘制固定区域子图matplotlib可以将整个画布规划成等分布局的mn(行列)的矩阵区域,并按照先行后列的·方式对每个区域进行编号(编号从1开始),之后在选中的某个区域或某些区…

    Python 2023年9月3日
    064
  • python的53道经典面试题

    本文列出Python面试问题,并且提供了答案,我是一名”Python工程师”,供给大家参考,不久前, 如果我在面试前提前了解一下Python的线程生命周期,…

    Python 2023年8月13日
    052
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球