Neste tutorial, você aprenderá sobre o módulo de array Python, a diferença entre arrays e listas e como e quando usá-los com a ajuda de exemplos.
Nota: Quando as pessoas dizem arrays em Python, na maioria das vezes, estão falando sobre listas Python . Se for esse o caso, visite o tutorial de lista do Python.
Neste tutorial, vamos nos concentrar em um módulo denominado array
. O array
módulo nos permite armazenar uma coleção de valores numéricos.
Criação de matrizes Python
Para criar uma matriz de valores numéricos, precisamos importar o array
módulo. Por exemplo:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Resultado
matriz ('d', (1,1, 3,5, 4,5))
Aqui, criamos um array do float
tipo. A letra d
é um código de tipo. Isso determina o tipo da matriz durante a criação.
Os códigos de tipo comumente usados são listados a seguir:
Código | Tipo C | Tipo Python | Bytes mínimos |
---|---|---|---|
b | char assinado | int | 1 |
B | caracter não identifcado | int | 1 |
u | Py_UNICODE | Unicode | 2 |
h | curto assinado | int | 2 |
H | curto sem sinal | int | 2 |
i | int assinado | int | 2 |
I | int sem sinal | int | 2 |
l | assinado por muito tempo | int | 4 |
L | longo sem sinal | int | 4 |
f | flutuador | flutuador | 4 |
d | em dobro | flutuador | 8 |
Não discutiremos os diferentes tipos de C neste artigo. Usaremos dois códigos de tipo em todo o artigo: i
para inteiros e d
para flutuantes.
Nota : O u
código de tipo para caracteres Unicode está obsoleto desde a versão 3.3. Evite usar tanto quanto possível.
Acessando elementos do array Python
Usamos índices para acessar os elementos de uma matriz:
import array as arr a = arr.array('i', (2, 4, 6, 8)) print("First element:", a(0)) print("Second element:", a(1)) print("Last element:", a(-1))
Resultado
Primeiro elemento: 2 Segundo elemento: 4 Último elemento: 8
Nota : O índice começa em 0 (não 1) semelhante a listas.
Fatiando Arrays Python
Podemos acessar uma variedade de itens em uma matriz usando o operador de fatiamento :
.
import array as arr numbers_list = (2, 5, 62, 5, 42, 52, 48, 5) numbers_array = arr.array('i', numbers_list) print(numbers_array(2:5)) # 3rd to 5th print(numbers_array(:-5)) # beginning to 4th print(numbers_array(5:)) # 6th to end print(numbers_array(:)) # beginning to end
Resultado
array ('i', (62, 5, 42)) array ('i', (2, 5, 62)) array ('i', (52, 48, 5)) array ('i', (2 , 5, 62, 5, 42, 52, 48, 5))
Alterando e Adicionando Elementos
Arrays são mutáveis; seus elementos podem ser alterados de maneira semelhante às listas.
import array as arr numbers = arr.array('i', (1, 2, 3, 5, 7, 10)) # changing first element numbers(0) = 0 print(numbers) # Output: array('i', (0, 2, 3, 5, 7, 10)) # changing 3rd to 5th element numbers(2:5) = arr.array('i', (4, 6, 8)) print(numbers) # Output: array('i', (0, 2, 4, 6, 8, 10))
Resultado
array ('i', (0, 2, 3, 5, 7, 10)) array ('i', (0, 2, 4, 6, 8, 10))
Podemos adicionar um item ao array usando o append()
método ou adicionar vários itens usando o extend()
método.
import array as arr numbers = arr.array('i', (1, 2, 3)) numbers.append(4) print(numbers) # Output: array('i', (1, 2, 3, 4)) # extend() appends iterable to the end of the array numbers.extend((5, 6, 7)) print(numbers) # Output: array('i', (1, 2, 3, 4, 5, 6, 7))
Resultado
array ('i', (1, 2, 3, 4)) array ('i', (1, 2, 3, 4, 5, 6, 7))
Também podemos concatenar dois arrays usando o +
operador.
import array as arr odd = arr.array('i', (1, 3, 5)) even = arr.array('i', (2, 4, 6)) numbers = arr.array('i') # creating empty array of integer numbers = odd + even print(numbers)
Resultado
matriz ('i', (1, 3, 5, 2, 4, 6))
Removendo Python Array Elements
Podemos excluir um ou mais itens de um array usando a instrução del do Python.
import array as arr number = arr.array('i', (1, 2, 3, 3, 4)) del number(2) # removing third element print(number) # Output: array('i', (1, 2, 3, 4)) del number # deleting entire array print(number) # Error: array is not defined
Resultado
array ('i', (1, 2, 3, 4)) Traceback (última chamada mais recente): Arquivo "", linha 9, em impressão (número) # Erro: array não está definido NameError: nome 'número' é não definido
Podemos usar o remove()
método para remover o item fornecido e o pop()
método para remover um item do índice fornecido.
import array as arr numbers = arr.array('i', (10, 11, 12, 12, 13)) numbers.remove(12) print(numbers) # Output: array('i', (10, 11, 12, 13)) print(numbers.pop(2)) # Output: 12 print(numbers) # Output: array('i', (10, 11, 13))
Resultado
array ('i', (10, 11, 12, 13)) 12 array ('i', (10, 11, 13))
Verifique esta página para saber mais sobre array Python e métodos de array.
Python Lists Vs Arrays
Em Python, podemos tratar listas como arrays. No entanto, não podemos restringir o tipo de elementos armazenados em uma lista. Por exemplo:
# elements of different types a = (1, 3.5, "Hello")
Se você criar matrizes usando o array
módulo, todos os elementos da matriz devem ser do mesmo tipo numérico.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Resultado
Traceback (most recent call last): File "", line 3, in a = arr.array('d', (1, 3.5, "Hello")) TypeError: must be real number, not str
When to use arrays?
Lists are much more flexible than arrays. They can store elements of different data types including strings. And, if you need to do mathematical computation on arrays and matrices, you are much better off using something like NumPy.
So, what are the uses of arrays created from the Python array module?
The array.array
type is just a thin wrapper on C arrays which provides space-efficient storage of basic C-style data types. If you need to allocate an array that you know will not change, then arrays can be faster and use less memory than lists.
A menos que você realmente não precise de arrays (o módulo de array pode ser necessário para fazer interface com o código C), o uso do módulo de array não é recomendado.