Introdução a listas e arrays em Python

Introdução a listas e arrays em Python

April 12, 2023 | lista_array_python

Lista #

Listas são estruturas mutáveis, o que significa que é possível substituir, inserir ou remover elementos contidos nelas. No entanto, é importante destacar que as listas retornadas pelos operadores de fatia e concatenação são novas listas e não partes da lista original.

O tipo “list” inclui vários métodos chamados mutadores, cujo objetivo é modificar a estrutura de uma lista. Entre os métodos mais utilizados estão o “append”, “insert”, “pop”, “remove” e “sort”.

Um exemplo prático do uso desses métodos seria o seguinte:

# Criando uma lista vazia
frutas = []

# Adicionando elementos com o método append
frutas.append("maçã")
frutas.append("banana")
frutas.append("abacaxi")
print(frutas) # ['maçã', 'banana', 'abacaxi']

# Inserindo um elemento em uma posição específica com o método insert
frutas.insert(1, "laranja")
print(frutas) # ['maçã', 'laranja', 'banana', 'abacaxi']

# Removendo um elemento com o método remove
frutas.remove("banana")
print(frutas) # ['maçã', 'laranja', 'abacaxi']

# Removendo e retornando o último elemento com o método pop
fruta_removida = frutas.pop()
print(frutas) # ['maçã', 'laranja']
print(fruta_removida) # 'abacaxi'

# Ordenando a lista com o método sort
frutas.sort()
print(frutas) # ['laranja', 'maçã']

Observe que esses métodos modificam a lista original, por isso é importante ter cuidado ao utilizá-los.

Os métodos “split” e “join” de strings são muito úteis para manipular textos em Python. O método “split” é usado para dividir uma string em uma lista de palavras com base em um determinado separador. Já o método “join” é usado para unir uma lista de palavras em uma única string, utilizando um separador específico entre elas.

Por exemplo:


# Usando o método split
frase = "O rato roeu a roupa do rei de Roma"
palavras = frase.split()
print(palavras) # ['O', 'rato', 'roeu', 'a', 'roupa', 'do', 'rei', 'de', 'Roma']

# Usando o método join
palavras = ['O', 'rato', 'roeu', 'a', 'roupa', 'do', 'rei', 'de', 'Roma']
nova_frase = " ".join(palavras)
print(nova_frase) # 'O rato roeu a roupa do rei de Roma'

No exemplo acima, ao usar o método “split” sem passar um separador como argumento, ele divide a frase em uma lista de palavras com base nos espaços em branco. Em seguida, ao usar o método “join” com um espaço em branco como separador, a lista de palavras é unida novamente em uma única string.

Podemos observar que uma lista, possui métodos bem definidos para serem utilizados, facilitando ao programador trabalhar com varios tipos, e formas de manipulação.

Vale lembrar que esses métodos são muito flexíveis e podem ser utilizados de diversas formas para manipular textos em Python.

Array #

O array é uma estrutura de dados que representa uma sequência de itens acessíveis ou substituíveis em posições de índice específicas. Ao contrário das listas, o array tem um comprimento fixo quando é criado e não permite adicionar ou remover posições. A estrutura subjacente de uma lista Python é um array, que permite acesso e substituição de itens em posições específicas e também examinar seu comprimento e obter sua representação em string.

O módulo array do Python possui uma classe array que se comporta como uma lista, mas é limitada a armazenar apenas números. Para criar uma nova estrutura de dados que possa armazenar diferentes tipos de dados, podemos usar uma lista Python para isso. A classe Array tem funcionalidades que permitem usar operações comuns como [], len, str e loop for com objetos de array. É importante lembrar que o programador deve definir o tamanho físico ou a capacidade do Array quando ele é criado e o valor padrão para preenchimento é “None”.


| Operações Array usuário | Método na classe Array               |
|-------------------------|--------------------------------------|
| a = Array(10)           | __init__(capacity, fillValue = None) |
| len(a)                  | __len__()                            |
| str(a)                  | __str__()                            |
| para o item em a:       | __iter__()                           |
| a[index]                | __getitem__(index)                   |
| a[index] = new_item     | __setitem__(index, new_item)         |

Quando uma operação é realizada em um objeto Array, o Python chama automaticamente o método correspondente. Por exemplo, ao percorrer um objeto Array com um loop for, o Python chamará automaticamente o método iter do objeto Array.

Abaixo está o código para implementar a classe Array e uma interação com o shell para demonstrar seu uso. Após criar e testar a classe Array, é importante lembrar que sua utilização é mais restrita do que uma lista e exige uma abordagem diferente ao usá-la.


class Array:
    """Representa uma array."""

    def __init__(self, capacity, fillValue=None):
        """Capacidade é o tamanho estático do array. fillValue é colocado em cada posição."""
        self.items = [fillValue] * capacity

    def __len__(self):
        """A capacidade do array."""
        return len(self.items)

    def __str__(self):
        """A representação de string do array."""
        return str(self.items)

    def __iter__(self):
        """Suporta o percurso com um laço for."""
        return iter(self.items)

    def __getitem__(self, index):
        """Operador de subscrito para acesso no índice."""
        return self.items[index]

    def __setitem__(self, index, newItem):
        """Operador de subscrito para substituição no índice."""
        self.items[index] = newItem

Agora podemos chamar nossa classe Array:

from arrays import Array

a = Array(5)                         # Instância um array com 5 posições

len(a)                               # Apresenta o número de posições

print(a)                             # Mostra o contéudo no array
>>> [None, None, None, None, None]

for i in range(len(a)):              # Substitui o contéudo do array
    a[i] = i + 1

a[0]                                 # Acessa o item na primeira posição
>>> 1

for item in range(len(a)):           # Percorre o array, para mostrar os valores armazenados
    print(item)

Concluímos que, embora mais restritivo, o Array é uma estrutura de dados importante para certos casos de uso em que o tamanho é fixo e não precisa ser alterado posteriormente.

Referência: Lambert, Kenneth A. Fundamentos de Python: estruturas de dados. Cengage Learning, 2019.