LA – Python – Aula 07A – “Vetores”

“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/

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s