HOWTO · Python
Dividir a lista em pedaços em Python
Uma lista Python pode ser dividida em diferentes partes de tamanhos iguais. Isso pode ser feito usando funções definidas pelo usuário, compreensão de lista, itertools, lambda, lambda e islice e métodos NumPy.
Nesta página
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']]