首页 > 后端开发 > Python教程 > 如何在 Python 中使用'itertools.cycle”压缩不同大小的列表?

如何在 Python 中使用'itertools.cycle”压缩不同大小的列表?

Linda Hamilton
发布: 2024-10-27 13:12:30
原创
825 人浏览过

How to Zip Differently Sized Lists Using `itertools.cycle` in Python?

使用内置函数压缩不同大小的列表

虽然内置 zip 函数在合并两个时无法重复较短的列表对于不同大小的列表,您可以利用 itertools.cycle 函数来实现此结果。

Python 包 itertools 中的循环创建一个迭代器,即使在其耗尽之后,它也会重复从可迭代对象中返回元素。通过将 zip 与循环相结合,可以处理列表之间的大小差异,并确保根据需要重复较长的列表。

示例:

<code class="python">A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)</code>
登录后复制

在此示例中:

  • if len(A) > len(B) 检查第一个列表 (A) 是否比第二个列表 (B) 长。
  • 如果是,则使用 zip 将 A 与 B 的循环迭代器合并,从而在整个合并结果中有效地重复 B .
  • 如果 B 更长,则翻转顺序并循环 A。

结果:

zip_list 将包含以下元组作为生成器对象:

[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
登录后复制

工作原理:

itertools.cycle 创建可迭代对象的副本(在本例中为 B)并重复返回其元素。当 zip 迭代 A 时,它将每个元素与循环迭代器中的下一个可用元素配对。

如果 A 比 B 短,则一旦迭代器耗尽,该过程就会从 B 的开头重新开始。相反,如果 A 更长,B 迭代器会不断循环以填充合并列表的剩余部分。

以上是如何在 Python 中使用'itertools.cycle”压缩不同大小的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板