"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como `zip ([iter (s)]*n)` divide com eficiência uma lista em pedaços iguais em python?

Como `zip ([iter (s)]*n)` divide com eficiência uma lista em pedaços iguais em python?

Postado em 2025-02-06
Navegar:639

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

desconstruindo zip ( [iter (s)] n) em python

na função zip () combina elementos de múltiplos iterables em um único iterável de tuplas. Quando usado com o zip de sintaxe ( [iter (s)] n), ele oferece uma maneira conveniente de dividir uma lista em pedaços de tamanho igual.

como funciona:

The Expression [ITER (s)] n cria uma lista contendo n cópias do iterador sobre a lista S. Cada cópia do iterador começa no início da lista. O *Args descompacta a lista em argumentos para zip (), resultando em n iteráveis ​​sendo passados ​​para a função. (

[ITER (s)]

n) com código verbose: def verbose_chunk (s, n): "" "" Retorna uma lista de pedaços de tamanho igual de uma lista. "" " CHUNCS = [] para i no intervalo (n): Chunk = [] para j em range (len (s) // n): Chunk.append (Próximo (ITER (s))) blocos.append (tupla (pedaço)) Retorne chunks

este código primeiro itera o número desejado de chunks. Para cada pedaço, ele usa um loop aninhado para iterar sobre os elementos da lista e adicioná -los ao pedaço. O pedaço é então convertido em uma tupla e adicionado à lista de pedaços. , 7,8,9] n = 3 Print (Lista (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)] ambas as abordagens produzem o mesmo resultado, com o concisa zip (

[ITER (s)]
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
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3