Sobes.tech
Junior

Quais são as diferenças entre arrays e listas em Python?

sobes.tech IA

Resposta da IA

As listas (list) em Python são coleções ordenadas e mutáveis de elementos. Podem conter elementos de diferentes tipos de dados. São amplamente utilizadas para a maioria das tarefas.

Os arrays em Python geralmente referem-se às estruturas da biblioteca array ou numpy.

array.array:

  • Destinados a armazenar elementos do mesmo tipo (números).
  • Mais compactos em memória do que listas, pois armazenam os elementos de forma contígua.
  • Suportam algumas operações e conversões de baixo nível (por exemplo, para bytes).
import array

# Criação de um array de inteiros
arr = array.array('i', [1, 2, 3, 4, 5])
print(arr) # array('i', [1, 2, 3, 4, 5])

# Tentar adicionar um elemento de outro tipo causará um erro
# arr.append("olá") # TypeError: é necessário um inteiro (obtido str)

numpy.ndarray:

  • A estrutura principal para cálculos científicos.
  • Também destinada a armazenar elementos do mesmo tipo (geralmente números), mas pode ser multidimensional.
  • Oferece alto desempenho graças a operações vetorizadas.
  • Possui um amplo conjunto de funções matemáticas e métodos para trabalhar com dados.
import numpy as np

# Criação de um array NumPy
np_arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
print(np_arr) # [1. 2. 3. 4. 5.]

# Operação vetorizada
result = np_arr * 2
print(result) # [2. 4. 6. 8. 10.]

Diferenças principais:

Característica Lista (list) array.array numpy.ndarray
Tipo de dados Heterogéneos Homogéneos (por dtype) Homogéneos (por dtype)
Mutabilidade Mutável Mutável Mutável
Desempenho Menor para operações numéricas Maior que listas Máximo para operações vetorizadas
Utilização Uso geral Armazenamento eficiente de números Cálculos científicos, análise de dados
Dimensão Unidimensional Unidimensional Multidimensional

Assim, a principal diferença reside na homogeneidade dos elementos (para arrays) e na sua especialização: array para memória, numpy para cálculos, enquanto as listas são uma ferramenta versátil.