Divida a lista Python pela metade

Hemank Mehtani 30 janeiro 2023
  1. Use a divisão de listas para dividir uma lista ao meio em Python
  2. Use a função islice() para dividir uma lista em meio Python
  3. Use a função accumulate() para dividir uma lista ao meio em Python
Divida a lista Python pela metade

As listas armazenam elementos em um índice específico e são mutáveis, o que significa que podemos atualizar posteriormente os valores em uma lista.

Aprenderemos como dividir uma lista pela metade neste tutorial.

Use a divisão de listas para dividir uma lista ao meio em Python

O fatiamento de lista pega uma parte específica da lista para alguma operação, enquanto a lista original permanece inalterada. Isso significa que ele cria uma duplicata da lista para executar a tarefa atribuída. O operador de fatiamento ([:]) em Python é usado para isso.

Dividimos uma lista pela metade no código a seguir.

lst = ["a", "b", "c", "d", "e", "f"]
print(lst[:3])
print(lst[3:])

Produção:

['a', 'b', 'c']
['d', 'e', 'f']

Também podemos criar uma função para dividir a lista ao meio. Usaremos a função len() para encontrar o comprimento da lista. Vamos usar a metade desse valor e usar o método de divisão de lista para dividi-lo ao meio.

Por exemplo,

def split_list(a_list):
    half = len(a_list) // 2
    return a_list[:half], a_list[half:]


A = ["a", "b", "c", "d", "e", "f"]
B, C = split_list(A)
print(B)
print(C)

Produção:

['a', 'b', 'c']
['d', 'e', 'f']

Criamos uma função split_list que retorna duas metades de uma lista existente.

Observe que isso não altera a lista original, pois cria uma lista duplicada para executar a tarefa atribuída.

Use a função islice() para dividir uma lista em meio Python

Em Python, itertools é o módulo embutido que nos permite lidar com os iteradores de forma eficiente.

Isso torna a iteração por meio de iteráveis ​​como listas e strings muito fácil. A função islice faz parte do módulo itertools. Ele imprime seletivamente os valores mencionados em seu contêiner iterável passado como um argumento.

Por exemplo,

from itertools import islice

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
lst = iter(Input)
Output = [list(islice(lst, elem)) for elem in length_to_split]

print("Initial list:", Input)
print("After splitting", Output)

Produção:

Initial list: ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]

Use a função accumulate() para dividir uma lista ao meio em Python

A função zip() é usada para combinar elementos de um iterável. Podemos usá-lo com a função accumulate() do módulo itertools para dividir uma lista ao meio.

Por exemplo,

from itertools import accumulate

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
Output = [
    Input[x - y : x] for x, y in zip(accumulate(length_to_split), length_to_split)
]
print("Initial list :", Input)
print("After splitting", Output)

Produção:

Initial list : ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]