使用内置函数压缩不同大小的列表
而内置 zip 函数在合并两个列表时无法重复较短的列表对于不同大小的列表,您可以利用 itertools.cycle 函数来实现此结果。Python 包 itertools 中的
cycle 创建了一个即使在耗尽之后,迭代器仍会重复从可迭代对象中返回元素。通过将 zip 与循环结合起来,可以处理列表之间的大小差异,并确保根据需要重复较长的列表。
示例:
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)
在此示例中:
结果:
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 迭代器不断循环以填充合并列表的剩余部分。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3