“Vetores” em Python
Sabemos que podemos utilizar vetores (ou arrays) em linguagens de programação, quando temos geralmente um conjunto de dados do mesmo tipo a ser tratado. Por exemplo, um conjunto de salarios de diferentes funcionários para sabermos a média ou a soma destes salários. Os nomes desses funcionários para posteriormente fazermos a contagem etc.
Em pyhton, há uma diferença quando tratamos esse tipo dado, a qual chamamos de estruturas de dados, as quais são muito mais flexíveis que os tradicionais vetores e matrizes.
Estrutura de dados são tipos mais flexível, a qual temos um objeto que podemos fazer uma comparação com vetores, chamado LISTA.
Lista é um objeto que possui um conjunto de dados, a qual usualmente são utilizados os mesmos tipos, apesar da lista poder suportar tipos diferentes!.
Além da Lista, Python possui as Tuplas e Dicionários, a qual também faz parte dos principais tipos de variáveis compostas.
Podemos utilizar uma lista atribuindo valores diretamente em sua declaração.
Exemplo de lista com um único tipo de valores
>>> lista = [-12, 50, 25, 0, 45, 9]
>>> lista
[-12, 50, 25, 0, 45, 9]
>>> type(lista)
Exemplo de lista com diversos tipos
>>> lista2 = [10, 'chocolate', 1002.55,'05/01/2000']
>>> lista2
[10, 'chocolate', 1002.55, '05/01/2000']
>>> type(lista)
Podemos acessar o elemento de uma lista utilizando o seu índice, iniciado por 0:
>>> lista[0]
-12
>>> lista[1]
50
Ainda podemos verificar o tipo de um dado em um dos elementos de uma lista:
>>> type(lista2[0])
>>> type(lista2[1])
>>> type(lista2[2])
>>> type(lista2[3])
É possível acessar o índice de uma lista com valores de índice negativos, como:
>>> lista[-1]
9
>>> lista[-2]
45
>>> lista[-3]
0
>>> lista[-6]
-12
>>>
Porém Python irá entender que o -1 seria a última posição do índice.
[-12, 50, 25, 0, 45, 9] 'Valores da variavel lista
-6 -5 -4 -3 -2 -1 'Índice negativo
É possível pegar valores de uma lista am partir de uma posição inicial e final de índice (excluente):
>>> lista[0:3]
[-12, 50, 25]
Em python, fácilmente, podemos fazer contas (acessando suas posições) com listas, acesso suas posições:
>>> notas = [5.5, 10.0, 4.5]
>>> somaNotas = notas[0] + notas[1] + notas[2]
>>> somaNotas
20.0
Perceba que para mostrar os valores de uma lista, não é preciso de um comando de laço, como em outras linguagens de programação:
>>> notas
[5.5, 10.0, 4.5]
Porém facilmente podemos fazer com que seja utilizado um comando FOR por exemplo:
>>> for i in range(3):
print(notas[i])
5.5
10.0
4.5
Mas se voce tentar acessar uma posição não existente, o Python irá reclamar que não é uma posição válida:
>>> notas[4] = 6.5
Traceback (most recent call last):
File "", line 1, in
notas[4] = 6.5
IndexError: list assignment index out of range
Podemos excluir uma variável da memória do Python, utilizando o comando del:
>>> del notas
>>> notas
Traceback (most recent call last):
File "", line 1, in
notas
NameError: name 'notas' is not defined
Há possibilidade se colocar diretamente um valor na posição de uma lista. No caso abaixo, podemos verificar que foi preciso criar a lista com tres posições, contendo zero em cada uma delas
>>> notas = [0,0,0]
>>> notas[0]= eval(input('Digite nota 1:'))
Digite nota 1:5
>>> notas[1]= eval(input('Digite nota 2:'))
Digite nota 2:7
>>> notas[3]= eval(input('Digite nota 3:'))
Digite nota 3:8
>>> notas[2]= eval(input('Digite nota 3:'))
Digite nota 3:8
>>> notas
[5, 7, 8]
É possível criar uma lista vazia, sem a quantidade de posições iniciais:
>>> notas = []
Após ter criado a lista, podemos utilizar o comando append, para incluir os valores na lista:
>>> notas = []
>>> valor = float(input('Digite um valor para a lista: '));
Digite um valor para a lista: 100
>>> notas.append(valor);
>>> valor
100.0
Índices de uma lista
Sempre tome cuidado ao acessar posicoes de que não existe em uma lista, como por exemplo:
funcionarios = [‘Ana’,’Maria’,’Pedro’,’Joao’]
print(funcionarios[4])
Traceback (most recent call last):
File “”, line 1, in
print(funcionarios[4])
IndexError: list index out of range
>>>
Lembre-se que é possível acessar uma lista em ordem decrescente, com posições negativas. Exemplo
vetorA
|-----|
[0] | -10 | [-5]
|-----|
[1] | 5 | [-4]
|-----|
[2] | 0 | [-3]
|-----|
[3] | 25 | [-2]
|-----|
[4] | -5 | [-1]
|-----|
>>> vetorA = [-10, 5, 0, 25, -5]
>>> vetorA[2]
0
>>> vetorA[-2]
25
>>> vetorA[4] == vetorA[-1]
True
Manipulação de lista através de comandos de funções
Tamanho de uma lista
Podemos obter o tamanho de uma lista com a função len(nome_da_lista).
Por exemplo:
>>> inteiros = [1,5,7,9,10,15,19,25]
>>> len(inteiros)
8
Concatenação de valores em uma lista
Podemos fazer a inclusão de valores em uma lista, utilizando o operador +
Por exemplo:
>>> inteiros = [10,15,20,25,30]
>>> inteiros + [35]
[10, 15, 20, 25, 30, 35]
Porém, ele não irá “apendar” o último valor
>>> inteiros
[10, 15, 20, 25, 30]
Para isso, é necessário fazer com que a lista receba ela mesma mais o valor com mais:
>>> inteiros = inteiros + [35]
>>> inteiros
[10, 15, 20, 25, 30, 35]
É possível (e melhor) utilizar o método append para adionar um elemento na última posição da lista.
>>> inteiros = [10, 15, 20, 25, 30, 35]
>>> inteiros.append(40)
>>> inteiros
[10, 15, 20, 25, 30, 35, 40]
“Multiplicação” de listas
O operador “*” na verdade faz a repetição de N vezes os elementos que estão na lista
>>> inteiros = [100, 200, 300]
>>> inteiros * 3
[100, 200, 300, 100, 200, 300, 100, 200, 300]
Inicialização de listas
Sabendo com antecedencia o tamanho de uma lista, é possível inicializar todos os elementos da lista com um determinado valor:
>>> tam = 5
>>> inteiros =[3] * tam
>>> inteiros
[3, 3, 3, 3, 3]
>>>
Inserção de um elemento em uma lista
A função insert adiciona um elemento em uma lista na posição que desejarmos
>>> vogais =["A", "E", "I"]
>>> vogais.insert(1,"O")
>>> vogais
['A', 'O', 'E', 'I']
Alteração de um elemento em uma lista
A alteração de um elemento nada mais é que a substituição desse elemento, passando a posição do elementos que voce deseja trocar:
>>> vogais =["A", "E", "I"]
>>> vogais[0] = "U"
>>> vogais
['U', 'E', 'I']
Excluindo um elemento em uma lista
Para fazer a exclusão de um elemento, também é necessário passarmos a posição (índice) desejado:
>>> vogais =["A", "E", "I"]
>>> del(vogais[2])
>>> vogais
['A', 'E']
Limpando todos os elementos em uma lista
É possível fazer a limpeza de uma única vez, utilizando o métod clear da lista:
>>> vogais =["A", "E", "I"]
>>> vogais.clear()
>>> vogais
[]
Excluindo elementos em um determinado intervalo
>>> inteiros = [1,2,3,4,5,6,7,8,9,10]
>>> del(inteiros[1:3)]
>>> inteiros
[1, 4, 5, 6, 7, 8, 9, 10]
Lembre-se que a posição é excluente. Por exemplo, de [1:3], a posição é até 2
Podemos também fazer com que os elementos sejam excluídos em passos, iniciando sempre a exclusão pelo primeiro elemento:
>>> inteiros = [1,2,3,4,5,6,7,8,9,10]
>>> del(inteiros[::2])
>>> inteiros
[2, 4, 6, 8, 10]
>>> inteiros = [1,2,3,4,5,6,7,8,9,10]
>>> del(inteiros[::3])
>>> inteiros
[2, 3, 5, 6, 8, 9]
>>> inteiros = [1,2,3,4,5,6,7,8,9,10]
>>> del(inteiros[::4])
>>> inteiros
[2, 3, 4, 6, 7, 8, 10]
Função pop em uma lista
Essa função faz o retorno do último elemento da lista e ao mesmo tempo o exclui.
>>> inteiros = [1,2,3,4,5,6,7,8,9,10]
>>> inteiros.pop()
10
>>> inteiros
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Também é possível passar o elemento desejado para ser retornado e excluído:
>>> inteiros
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> inteiros.pop(5)
6
>>> inteiros
[1, 2, 3, 4, 5, 7, 8, 9]
Cópia de listas em python
Tome muito cuidado em fazer cópias de listas em Python. A primeira tentativa que fazemos é utilizar o operador igual (“=”) para tentar fazer a cópia de listas, porém em vez de fazer a cópia, python faz a referencia da lista. Por exemplo:
>>> numeros = [1,2,3,4,5,6,7,8,9,10]
>>> inteiros = numeros
>>> numeros
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numeros.pop()
10
>>> inteiros
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Percebemos que quando alteramos na lista inteiros, também estamos alterando o conteúdo da lista numeros
Podemos provar com o seguinte comando:
>>> numeros is inteiros
True
ou verificando os seus identificadores
>>> id(numeros)
1953963331528
>>> id(inteiros)
1953963331528
Para realmente deixarmos os objetos lista independentes, utilizamos a função list:
>>> numeros = [1,2,3,4,5,6,7,8,9,10]
>>> inteiros = list(numeros)
>>> inteiros
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numeros.pop()
10
>>> numeros
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> inteiros
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ou
>>> numeros = [1,2,3,4,5,6,7,8,9,10]
>>> inteiros = numeros[:]
>>> numeros.pop()
10
>>> numeros
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> inteiros
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Existencia de um elemento em uma lista
A existencia de um elementos em uma lista retorna um booleano, podendo ser utilizado como:
>>> interios = range(1,100,2)
>>> inteiros
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lista = [ 1,2,3,4,5,6,7,8,9,10 ]
>>> lista
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> 5 in lista
True
>>> 500 in lista
False
Ordernação e reverso de uma lista
Facilmente podemos colocar elementos de uma lista em ordem e em ordem reversa através das funções sort e reverse:
>>> nomes = ["Ana","Pedro","Joao","Maria","Ana","Chico","Joana"]
>>> nomes.sort()
>>> nomes
['Ana', 'Ana', 'Chico', 'Joana', 'Joao', 'Maria', 'Pedro']
>>> nomes.reverse()
>>> nomes
['Pedro', 'Maria', 'Joao', 'Joana', 'Chico', 'Ana', 'Ana']
Contagem de determinados elementos de uma lista
>>> nomes = ["Ana","Pedro","Joao","Maria","Ana","Chico","Joana"]
>>> nomes.count("Ana")
2
>>> nomes.count("JOAO")
0
Removendo determinado elemento de uma lista
>>> nomes = ["Ana","Pedro","Joao","Maria","Ana","Chico","Joana"]
>>> nomes.remove("Ana")
>>> nomes
['Pedro', 'Joao', 'Maria', 'Ana', 'Chico', 'Joana']
Valores máximo, mínimo e soma de elementos de uma lista
>>> lista = [1,2,3,4,5,6,7,8,9,10]
>>> min(lista)
1
>>> max(lista)
10
>>> sum(lista)
55
A função range
Range é uma função que podemos utilizar para criar uma sequencia de valores, passando os parametros de “inicio, parada e passo”, sendo que todos os parametros precisam ser inteiros (positivos e negativos), baseado no índice 0.
>>> sequencia = range(1,100,2)
>>> for n in sequencia:
print(n);
1
3
5
7
9
11
13
...
Com isso, podemos usar o comando list para fazer a criacao de uma lista:
>>> sequencia
range(1, 100, 2)
>>> inteiros = list(sequencia)
>>> inteiros
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
Referencias:
http://excript.com/python/incluindo-alterando-excluindo-elementos-lista-python.html
http://codare.aurelio.net/2007/04/04/python-copia-rasa-de-listas/
http://blog.aprendapython.com.br/articles/copiar-lista-e-dicionario-1fr61/
https://www.devmedia.com.br/como-trabalhar-com-listas-em-python/37460
https://www.pythoncentral.io/pythons-range-function-explained/