在 Python 中,'zip([iter(s)]*n)”如何有效地将列表分成相等的块?

Barbara Streisand
发布: 2024-11-21 03:48:11
原创
600 人浏览过

How does `zip([iter(s)]*n)` efficiently split a list into equal chunks in Python?

在 Python 中解构 zip([iter(s)]n)

在 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中文网其他相关文章!

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