在 Python 中,zip() 函数组合来自多个可迭代对象的元素成单个可迭代的元组。当与语法 zip([iter(s)]n) 一起使用时,它提供了一种将列表拆分为大小相等的块的便捷方法。
工作原理:
表达式 [iter(s)]n 创建一个列表,其中包含列表 s 上迭代器的 n 个副本。迭代器的每个副本都从列表的开头开始。 *args 将列表解压为 zip() 的参数,从而将 n 个迭代传递给函数。
详细等效:
重新创建 zip 的功能([iter(s)]n) 带有详细代码:
def verbose_chunk(s, n): """Returns a list of chunks of equal size from a list.""" chunks = [] for i in range(n): chunk = [] for j in range(len(s) // n): chunk.append(next(iter(s))) chunks.append(tuple(chunk)) return chunks
此代码首先迭代所需数量的块。对于每个块,它使用嵌套循环来迭代列表中的元素并将它们添加到块中。然后将块转换为元组并添加到块列表中。
示例:
s = [1,2,3,4,5,6,7,8,9] n = 3 print(list(zip(*[iter(s)]*n))) # [(1,2,3),(4,5,6),(7,8,9)] print(verbose_chunk(s, n)) # [(1,2,3),(4,5,6),(7,8,9)]
两种方法产生相同的结果,使用简洁的 zip ([iter(s)]n) 表达式提供更有效的语法来将列表拆分为块。
以上是在 Python 中,'zip([iter(s)]*n)”如何有效地将列表分成相等的块?的详细内容。更多信息请关注PHP中文网其他相关文章!