Dividir a lista em pedaços em Python

Azaz Farooq 30 janeiro 2023
  1. Divida a lista em Python em pedaços usando o método de compreensão de lista
  2. Divida a lista em Python em pedaços usando o método itertools
  3. Divida a lista em Python em pedaços usando a função lambda
  4. Divida a lista em Python em pedaços usando o método lambda e islice
  5. Divida a lista em Python em pedaços usando o método NumPy
  6. Divida a lista em pedaços em Python usando uma função definida pelo usuário
Dividir a lista em pedaços em Python

Uma das estruturas de dados do Python que pode conter valores ou elementos mistos é chamada de listas. Este artigo apresentará várias maneiras de dividir uma lista em partes. Você pode usar qualquer exemplo de código que atenda às suas especificações.

Divida a lista em Python em pedaços usando o método de compreensão de lista

Podemos usar a compreensão de lista para dividir uma lista Python em pedaços. É uma maneira eficiente de encapsular as operações para tornar o código mais fácil de entender.

O código de exemplo completo é fornecido abaixo.

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

n = 3

output = [test_list[i : i + n] for i in range(0, len(test_list), n)]
print(output)

Resultado:

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]

range(0, len(test_list), n) retorna um intervalo de números começando em 0 e terminando em len(test_list) com um passo de n. Por exemplo, range(0, 10, 3) retornará (0, 3, 6, 9).

test_list[i:i + n] obtém o pedaço da lista que começa no índice i e termina exclusivamente em i + n. O último pedaço da lista dividida é test_list[9], mas os índices calculados test_list[9:12] não irão gerar um erro, mas serão iguais a test_list[9].

Divida a lista em Python em pedaços usando o método itertools

Este método fornece um gerador que deve ser iterado usando um loop for. Um gerador é uma maneira eficiente de descrever um iterador.

from itertools import zip_longest

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]


def group_elements(n, iterable, padvalue="x"):
    return zip_longest(*[iter(iterable)] * n, fillvalue=padvalue)


for output in group_elements(3, test_list):
    print(output)

Resultado:

('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10', 'x', 'x')

[iter(iterable)]*n gera um iterador e iterou n vezes na lista. Um round-robin de cada iterador é então efetivamente executado por izip-longest; como este é um iterador semelhante, cada chamada é avançada, resultando em cada um desses zip-round-robin produzindo uma tupla de n objetos.

Divida a lista em Python em pedaços usando a função lambda

É possível usar uma função lambda básica para dividir a lista em um determinado tamanho ou em pedaços menores. Esta função funciona na lista original e na variável de tamanho N, itera sobre todos os itens da lista e divide em pedaços de tamanho N.

O exemplo de código completo é fornecido abaixo:

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

x = 3


def final_list(test_list, x):
    return [test_list[i : i + x] for i in range(0, len(test_list), x)]


output = final_list(test_list, x)

print("The Final List is:", output)

Resultado:

The Final List is: [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]

Divida a lista em Python em pedaços usando o método lambda e islice

Uma função lambda pode ser usada com a função islice e produzir um gerador que itera sobre a lista. A função islice cria um iterador que extrai os itens selecionados do iterável. Se o início for diferente de zero, os elementos iteráveis ​​serão ignorados antes que o início seja alcançado. Os elementos são então retornados consecutivamente, a menos que uma etapa seja definida mais alta do que aquela que resulta no salto de itens.

O exemplo de código completo é fornecido abaixo:

from itertools import islice

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]


def group_elements(lst, chunk_size):
    lst = iter(lst)
    return iter(lambda: tuple(islice(lst, chunk_size)), ())


for new_list in group_elements(test_list, 3):
    print(new_list)

Resultado:

('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10',)

Divida a lista em Python em pedaços usando o método NumPy

A biblioteca NumPy também pode ser usada para dividir a lista em blocos de tamanho N. A função array_split() divide a matriz em subarrays de tamanho específico n.

O exemplo de código completo é fornecido abaixo:

import numpy

n = numpy.arange(11)

final_list = numpy.array_split(n, 4)
print("The Final List is:", final_list)

A função arange ordenou os valores de acordo com o argumento dado e a função array_split() produz a lista / subarrays com base no parâmetro dado nela como um parâmetro.

Resultado:

The Final List is: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10])]

Divida a lista em pedaços em Python usando uma função definida pelo usuário

Este método itera sobre a lista e produz blocos consecutivos de tamanho n, onde n se refere ao número em que uma divisão precisa ser implementada. Uma palavra-chave yield é usada nesta função e permite que uma função seja interrompida e restaurada conforme o valor gira quando a execução é suspensa. Estas são as distinções importantes de uma função normal. Uma função normal não pode retornar de onde parou. A função é chamada de Generator quando usamos uma instrução yield em uma função. Um gerador produz ou retorna valores e não pode ser nomeado como uma função simples, mas sim como um iterável, ou seja, usando um loop.

O código de exemplo completo é o seguinte.

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]


def split_list(lst, n):
    for i in range(0, len(lst), n):
        yield lst[i : i + n]


n = 3

output = list(split_list(test_list, n))
print(output)

Resultado:

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]

Artigo relacionado - Python List