Dividir a lista em pedaços em Python
- Divida a lista em Python em pedaços usando o método de compreensão de lista
-
Divida a lista em Python em pedaços usando o método
itertools
-
Divida a lista em Python em pedaços usando a função
lambda
-
Divida a lista em Python em pedaços usando o método
lambda
eislice
-
Divida a lista em Python em pedaços usando o método
NumPy
- Divida a lista em pedaços em Python usando uma função definida pelo usuário
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']]