您的位置:首页 > 游戏 > 手游 > python生成器介绍

python生成器介绍

2024/10/6 12:24:03 来源:https://blog.csdn.net/weixin_46713695/article/details/141782750  浏览:    关键词:python生成器介绍

目录

  • 生成器

生成器

原始代码

ans_file_paths = [path for path in file_paths if any(id_ in path for id_ in ids_set)]

修改后代码

def file_generator(root_dir, ids_set):"""生成器:用于生成符合条件的文件路径"""file_pattern = os.path.join(root_dir, '*csv')file_paths = glob(file_pattern)for path in file_paths:if any(id_ in path for id_ in ids_set):yield path

原始代码解释:

  1. 列表推导式:这段代码使用了 Python 中的列表推导式(list comprehension),是一种简洁的方式来生成一个列表。
  2. 条件筛选:它从 file_paths 列表中筛选出符合条件的文件路径。具体来说,它会检查 ids_set 中的每个 id_ 是否出现在路径 path 中。
  3. 结果:最终,ans_file_paths 将包含所有符合条件的文件路径。

修改后解释:

  1. 定义了一个生成器函数:修改后的代码将原来的列表推导式转换成了一个生成器函数 file_generator。生成器是一种特殊的迭代器,允许你逐个生成值,而不是一次性生成所有值。

  2. 使用 yield 关键字:在 file_generator 函数中,使用了 yield 关键字。当函数执行到 yield 时,它会返回一个值并暂停执行,以后再调用时会从暂停的地方继续执行。这意味着生成器不会一次性将所有结果都计算出来,而是按需生成。

  3. 内存效率:使用生成器的一个主要好处是内存效率。原始代码会一次性创建一个包含所有符合条件路径的列表,这在处理大量文件路径时可能会消耗大量内存。而生成器则只会在需要时生成一个路径,这样可以节省内存。

  4. 可读性和可重用性:将代码封装在函数中提高了可读性和可重用性。你可以多次调用 file_generator,并在不同的地方使用它,而不必每次都写一遍筛选逻辑。

总结

  • 原始代码:使用列表推导式一次性生成所有符合条件的文件路径,可能会占用较多内存。
  • 修改后代码:使用生成器按需生成文件路径,节省内存,提高了代码的可读性和可重用性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com