39
Processamento da Informação Fabrício Olivetti de França 02 de Fevereiro de 2019

Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Processamento da Informação

Fabrício Olivetti de França

02 de Fevereiro de 2019

Page 2: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Topics

1. Listas e Vetores

1

Page 3: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Listas e Vetores

Page 4: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Listas e Vetores

Uma lista em Python é um container de informações que, por algummotivo, devem estar agrupadas para serem processadassequencialmente.

2

Page 5: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Listas e Vetores

O comportamento de uma lista é similar a de uma string (naverdade a string é uma lista de caracteres):

3

Page 6: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Listas e Vetores

Para criar uma lista, basta colocar elementos entre colchetes eseparados por vírgula:

listaDeNums = [1,2,3,4,5,6,7,8,9,10]listaDeBools = [False, True]

4

Page 7: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Operações com listas

A linguagem Python fornece algumas funções para manipularmosstrings:

função descrição

len(l) retorna o tamanho da lista<,>,==,!=,<=,>= compara uma lista lexicograficamentel1 + l2 concatena duas listasl1 * n replica a lista n vezesl.append(x) insere elemento x no final da lista

5

Page 8: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Indexação

A indexação é exatamente a mesma de uma string:

l[pos]

6

Page 9: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Indexação

A posição começa a contar do 0:

l = [1,2,3]s[0] == 1s[1] == 2s[2] == 3s[3] == ERRO!

7

Page 10: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Indexação

l = [1,2,3]s[-1] == 3s[-2] == 2s[-3] == 1

8

Page 11: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Mutabilidade

Ao contrário da string, uma lista é mutável, ou seja, podemosalterar seu conteúdo:

lista = [1,2,3]lista[2] = 4print(lista)> [1,2,4]

9

Page 12: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Slices

Os slices funcionam da mesma forma que em uma string:

l = [1,2,3,4,5,6,7,8]l[1:3] = ??l[4:2:-1] = ??l[1:6:2] = ??l[::-1] = ??

10

Page 13: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Slices

Os slices funcionam da mesma forma que em uma string:

l = [1,2,3,4,5,6,7,8]l[1:3] = [2,3]l[4:2:-1] = [5,4]l[1:6:2] = [2,4,6]l[::-1] = [8,7,6,5,4,3,2,1]

11

Page 14: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Iterando

Para iterar uma lista, utilizamos o for:

l = [1,2,3,4]for elemento in l:

print(elemento)

12

Page 15: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Elementos híbridos

Note que não temos limitações em relação aos tipos de elementosem uma lista. Eles inclusivem podem se misturar:

hibrido = [1, False, 3.5]

13

Page 16: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Lista como vetores

Vamos interpretar as listas como vetores numéricos. Para tantoprecisamos criar algumas funções de interesse prático como:

• operações algébricas elemento-a-elemento entre vetores• produto interno e externo entre dois vetores• média, variância e desvio-padrão dos elementos de um vetor• encontrar o maior e menor valor• buscar um elemento

dentre outros

14

Page 17: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Operações algébricas

Defina a função somaVec que soma dois vetores elemento aelemento. Caso o tamanho deles seja diferente, trunque o maiorvetor.

15

Page 18: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Operações algébricas

def somaVec(v1, v2):v3 = []menor_tam = min(len(v1), len(v2))for i in range(menor_tam):

v3.append(v1[i]+v2[i])return v3

16

Page 19: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Zippping

A função zip junta duas ou mais listas em tuplas dos elementosdessa lista:

v1 = [1,2,3]v2 = [4,5,6, 7]zip(v1,v2) = [(1,4), (2,5), (3,6)]

ela inclusive trunca o maior vetor!

17

Page 20: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Zippping

Com isso podemos reescrever nossa função anterior para:

def somaVec(v1,v2):v3 = []for x, y in zip(v1,v2):

v3.append(x+y)return v3

18

Page 21: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Escreva a função multVec!

19

Page 22: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Defina a função somatoria que faz a soma dos elementos de umvetor.

20

Page 23: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Defina a função prodInterno que calcula o produto interno entredois vetores.

21

Page 24: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Defina a função media que calcula a média dos elementos de umvetor.

22

Page 25: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Defina a função variancia. Para isso, primeiro crie funçõesauxiliares!

23

Page 26: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Como você definiria o desvio-padrão?

24

Page 27: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Defina as funções maior e menor que retorna o maior e menorelemento de um vetor.

25

Page 28: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Faça um algoritmo para gerar uma lista com a sequência deFibonacci de tamanho n.

26

Page 29: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Faça um algoritmo que receba uma lista de string e retorne umalista contendo o tamanho de cada string.

27

Page 30: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Faça um algoritmo que receba uma lista de int e retorne uma listade bool indicando se cada valor é um número par ou não.

28

Page 31: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Função map

Os dois exercícios anteriores são praticamente iguais! Esse é umpadrão frequente de programação.

Para facilitar, o Python fornece a função map:

def par(x):return x%2 == 0

list(map(par, [1,2,3,4,5,6]))# [False, True, False, True, False, True]

29

Page 32: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Faça um algoritmo que receba uma lista de int e retorne uma listacontendo apenas os valores ímpares.

30

Page 33: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Função filter

Esse padrão também é bastante comum e, por isso, temos a funçãofilter:

def impar(x):return not par(x)

list(filter(impar, [1,2,3,4,5,6]))# [1,3,5]

31

Page 34: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Utilizando a função filter faça um algoritmo que conte o númerode vogais de uma string.

32

Page 35: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Crie um algoritmo que ordene os valores de uma lista!

33

Page 36: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Utilizando a função anterior, faça um algoritmo que calcule amediana de uma lista de números.

34

Page 37: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

Faça um programa que receba uma string, ordene suas letras,agrupe em uma lista de listas e retorne a frequência de ocorrênciade cada letra:

frase = ”a fila do fretado esta lotada”frase_ordenada = ordena(frase)# [’ ’, ’ ’, ’ ’, ’ ’, ’ ’, ’a’, ’a’, ’a’, ’a’, ’a’, ’a’,# ’d’, ’d’, ’d’, ’e’, ’e’, ’f’, ’f’, ’i’, ’l’, ’l’, ’o’,# ’o’, ’o’, ’r’, ’s’, ’t’, ’t’, ’t’]

35

Page 38: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

grupos = agrupa(frase_ordenada)# [[’ ’, ’ ’, ’ ’, ’ ’, ’ ’], [’a’, ’a’, ’a’, ’a’, ’a’, ’a’],# [’d’, ’d’, ’d’], [’e’, ’e’], [’f’, ’f’], [’i’], [’l’, ’l’], [’o’,# ’o’, ’o’], [’r’], [’s’], [’t’, ’t’, ’t’]]

36

Page 39: Fabrício Olivetti de França 02 de Fevereiro de 2019€¦ · Listacomovetores Vamos interpretar as listas como vetores numéricos. Para tanto precisamos criar algumas funções de

Exercício

imprime_freq(grupos)# ’ ’ : 5# ’a’ : 6# ’d’ : 3# ’e’ : 2# ’f’ : 2# ’i’ : 1# ’l’ : 2# ’o’ : 3# ’r’ : 1# ’s’ : 1# ’t’ : 3

37