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