Algoritmose Estruturade Dados - UFMA · count Nº de ocorrências de um elemento extend Insereno...

14
2/1/17 1 Algoritmos e Estrutura de Dados Aula 02 – Listas em Python Profa. Alana Oliveira e Prof. Davi Viana [email protected] e [email protected] Se não entender, pergunte! Profa. Alana Oliveira, ECP / UFMA 2

Transcript of Algoritmose Estruturade Dados - UFMA · count Nº de ocorrências de um elemento extend Insereno...

2/1/17

1

Algoritmos e Estrutura de DadosAula 02 – Listas em Python

Profa. Alana Oliveira e Prof. Davi [email protected] e [email protected]

Se não entender, pergunte!

Profa. Alana Oliveira, ECP / UFMA 2

2/1/17

2

Dados e Tipos de Dados• Um dado é uma informação que um algoritmo recebe ou

manipula;

• Exemplos de dados são: • Nomes, datas, valores (preços, notas, etc.) e condições (verdadeiro e falso)

• Todo dado é de um certo tipo que define sua natureza (p. ex., um nome é diferente de um valor numérico), identificando seu uso, e define as operações que podem ser realizadas com o dado;

• Por exemplo, podemos somar dois valores numéricos, mas não podemos somar um número e uma frase.

Profa. Alana Oliveira, ECP / UFMA 3

Dados e Tipos de DadosTipos de dados atômicos:• int (ex: 1; 36; 2017)• float (ex: 3,1416)• bool (ex: True; False)

• Tipos de dados de coleção:• Listas• Tuplas• String• Dicionários

Profa. Alana Oliveira, ECP / UFMA 4

2/1/17

3

Como saber o tipo de um dado em Python?

>>> type(2017)

<class ’int’>

>>> type(True)

<type ’bool’>

Profa. Alana Oliveira, ECP / UFMA 5

Porque utilizar LISTAS?• Problema 1:• Dada uma relação de 5 notas, imprimir a nota de cada

estudante se esta for maior que a média da classe.• Usar seis variáveis do tipo float é viável.• Faça o código em Python.

Profa. Alana Oliveira, ECP / UFMA 6

2/1/17

4

Porque utilizar LISTAS?• Problema 1:• Dada uma relação de 5 notas, imprimir a nota de cada

estudante se esta for maior que a média da classe.• Usar seis variáveis do tipo float é viável.• Faça o código em Python.

• Problema 2:• Problema 1 com uma turma do BCT.• Usar 60 variáveis do tipo float é inviável.• Use listas do Python.

Profa. Alana Oliveira, ECP / UFMA 7

O que são LISTAS? • Uma lista é uma coleção ordenada de zero ou mais valores,

de um mesmo tipo ou não.

• Cada valor pode ser acessado por um índice dentro dolista.

• É basicamente a mesma ideia de um vetor em outraslinguagens.

• Listas são dinâmicas: podem crescer ou diminuir com otempo.

Profa. Alana Oliveira, ECP / UFMA 8

2/1/17

5

Listas – Definição• Listas são posições da memória:• identificadas por um único nome• individualizadas por índices• com conteúdo do mesmo tipo ou tipos variados

Profa. Alana Oliveira, ECP / UFMA 9

6.1 2.3 9.4 5.1 8.9 9.8 10 7.0 6.3 4.4

0 1 2 3 4 5 6 7 8 9

Notas:

Posição:

Listas – Criação• Para criar uma lista, utilizam-se colchetes []• Primeiro tipo: criação explícita

Profa. Alana Oliveira, ECP / UFMA 10

# Lista vazia

L = []

# Lista com elementos do mesmo tipo

L = [1,3,5]

# Lista com elementos de tipo distintos

L = [True, 2, ’3’]

2/1/17

6

Listas – Criação• Segundo tipo: criação implícita ou compreensão

de listas• L = [expressão for variável in sequência]• Calcular a expressão para cada elemento.

Exemplo:

• Leia assim: “Faça x ao quadrado para todo x de 0 a 9 ”

Profa. Alana Oliveira, ECP / UFMA 11

L = [x ** 2 for x in range(10)]

Listas – Criação• Segundo tipo: criação implícita ou compreensão

de listas• L = [expressão for variável in sequência if condição]• Selecionar elementos que satisfazem uma condição.

Exemplo:

Leia assim: “Faça x ao quadrado para todo x de 0 a 9 que seja múltiplo de 3 ”

Profa. Alana Oliveira, ECP / UFMA 12

L = [x ** 2 for x in range(10) if x%3 ==0 ]

2/1/17

7

Listas – Criação• Python cria uma nova lista sempre que [] for usado.

Profa. Alana Oliveira, ECP / UFMA 13

A = []

B = []

C = D = [] # C e D são a mesma lista

C = []; D = [] # C e D são independentes

Profa. Alana Oliveira, ECP / UFMA 14

O que eu posso fazer com um lista?

• Percorrer (acessar os itens da lista)• Incluir elementos• Excluir elementos• Ordenar• Obter valores específicos (maior número,

menor número, ...)• Obter sublistas• ...

2/1/17

8

Listas – Algumas Funções

Profa. Alana Oliveira, ECP / UFMA 15

Função

append Insere no final

clear Limpa toda a lista

copy Produz uma cópia de L

count Nº de ocorrências de um elemento

extend Insere no final

index Posição da primeira ocorrência de um elemento

insert Insere um elemento numa posição especificada

pop Retorna e remove um elemento

remove Remove a 1ª ocorrência de um elemento

reverse Inverte as posições dos elementos

sort Ordena os elementos

Listas – Funções de Manipulação

• append versus extend

Profa. Alana Oliveira, ECP / UFMA 16

L = [1,2,3]L.append([4,5]) print(L)

L = [1,2,3]L.extend([4,5]) print(L)

2/1/17

9

Listas – Funções de Manipulação• len() retorna o número de itens da lista L.

• L[i] retorna o i-ésimo item da lista L.

• L[inicio:fim] retorno os elementos do início ao fim de L. Isto chama-se fatiamento de listas.

Profa. Alana Oliveira, ECP / UFMA 17

L = [3,2,7,4,1]n = len(L)

L = [3,2,7,4,1]item = L[4]

L = [3,2,7,4,1]seq = L[1:4]

Listas – Funções de Manipulação

• L[inicio:fim:n] retorna os elementos de inicio a fim em passos de n.

Profa. Alana Oliveira, ECP / UFMA 18

L = [3,2,7,4,1]

#elemento sim, elemento não

seq = L[::2]

#elemento sim, elemento não apartir da posição 1

seq = L[1::2]

2/1/17

10

Listas – Funções de Manipulação

Profa. Alana Oliveira, ECP / UFMA 19

Lista = [3,6,9,12,15, 18]

Lista[0] # o primeiro elemento da lista:3Lista[-1] # o último elemento da lista: 18Lista[6] # ERRO!

3 6 9 12 15 18

0 1 2 3 4 5

Lista

-6 -5 -4 -3 -2 -1

Listas – Funções de Manipulação

• Utilizando o for-in: iterar pelos ITENS

• Utilizando o for-in: iterar pelos ÍNDICES

Profa. Alana Oliveira, ECP / UFMA 20

L = [3,2,7,4,1]for index in range(len(L)):

print index

L = [3,2,7,4,1]for item in L:

print item

2/1/17

11

Listas – Funções de Manipulação

• Utilizando o for-in: iterar pelos ITENS e INDICES

Profa. Alana Oliveira, ECP / UFMA 21

L = [3,2,7,4,1]for index, item in enumerate(L):

print index, item

Exercício

• A partir de um texto fornecido pelo usuário, conte o número de caracteres e quantos deles são vogais.

Profa. Alana Oliveira, ECP / UFMA 22

Contagem de ocorrência

2/1/17

12

Listas – Funções de Manipulação

• Atenção: M e L representam a mesma lista!

• Atenção: M e L não representam a mesma lista!

Profa. Alana Oliveira, ECP / UFMA 23

L = []M = L

L.append(3)

L = []M = L[:]

L.append(3)

>>> print(L)[3]>>> print (M)[3]

>>> print(L)[3]>>> print (M)[]

Listas – Exercícios de Fixação

• Dada uma lista L de números inteiros,escreva uma função que retorne uma lista Pcontendo os números pares de L.Observação: utilize criação implícita delistas.

• Dada uma lista L de números inteiros,escreva uma função que imprima todos osnúmeros de índices múltiplos de 3.

Profa. Alana Oliveira, ECP / UFMA 24

2/1/17

13

Listas – Exercícios de Fixação

• Dada uma lista L de números inteiros,escreva uma função retorne uma lista Pcontendo todos os itens de L acrescidos em10%.

• Dada uma lista L de números inteiros,escreva uma função que imprima os itensde L de trás para frente, sem utilizarreverse().

25

Listas – Exercícios de Fixação

• Dada uma lista L de números inteiros,escreva uma função que retorne uma lista Pcontendo os itens de L sem repetição

• Dada uma lista L de números inteiros,escreva uma função que imprima os índicesde todas as ocorrências de um númeroespecificado.

26

2/1/17

14

Listas – Exercícios de Fixação• Dada uma lista L de números inteiros, escreva

uma função que retorne uma lista P com osvalores ordenados de P, agrupados em númerospares primeiro e ímpares depois.

• Faça um programa que leia duas listas com 10elementos cada. Gere uma terceira lista de 20elementos, cujos valores deverão ser compostospelos elementos intercalados das duas outraslistas.

27

Material Complementar

• http://effbot.org/zone/python-list.htm

• https://developers.google.com/edu/python/lists

• https://pythonhelp.wordpress.com/2013/06/26/brincando-com-listas/

• https://panda.ime.usp.br/panda/python

• https://www.youtube.com/sentdex

28