You are on page 1of 11

23/11/2016

Python – Listas e Strings


Prof. Paulo Henrique Ribeiro Gabriel
(Com base no material do Prof. André Backes)
Listas

Por que usar listas? Listas

• As variáveis declaradas até agora são capazes de armazenar um único • A lista é a forma mais familiar de dados estruturados
valor por vez. • Basicamente, uma lista é uma sequência de elementos, onde cada
• Sempre que tentamos armazenar um novo valor dentro de uma variável, o elemento é identificado por um índice
valor antigo é sobrescrito e, portanto, perdido

• Diferente dos arrays usados em outras linguagens, em Python os


elementos de uma lista podem possuir qualquer tipo

Listas - Problema Listas - Solução

• Imagine o seguinte problema


• leia as notas de uma turma de cinco estudantes e depois imprima as notas
que são maiores do que a média da turma

• Um algoritmo para esse problema poderia ser o mostrado a seguir

1
23/11/2016

Listas Listas

• O algoritmo anterior apresenta uma solução possível para o • Para 100 alunos, precisamos de:
problema apresentado • Uma variável para armazenar a nota de cada aluno: 100 variáveis
• Um comando de leitura para cada nota: 100 input()
• Um somatório de 100 notas
• Porém, essa solução é inviável para grandes quantidades de alunos
• Um comando de teste para cada aluno: 100 comandos if
• Imagine se tivéssemos de processar os dados de 100 alunos
• Um comando de impressão na tela para cada aluno: 100 print()

Listas - Definição Listas - declaração

• As variáveis têm relação entre si • Existem várias maneiras de criar uma lista
• todas armazenam notas de alunos • Uma das mais simples é definir os elementos da lista entre colchetes
• Os elementos da lista devem ser separados por vírgulas
• Podemos declará-las usando um ÚNICO nome para todos os 100
• Se nenhum elemento for definido, temos uma lista vazia
alunos
• Também podemos usar a função range() para gerar uma lista de valores
• notas = conjunto de 100 números acessados por um índice
• isso é uma lista!

0 1 ... 99

notas

Listas - declaração Lista = variável

• Em uma lista, os elementos são acessados especificando o índice • Cada elemento da lista tem todas as características de uma variável e
desejado entre colchetes. A numeração começa sempre do zero pode aparecer em expressões e atribuições (respeitando os seus
• Isto significa que uma lista de 4 elementos terá índices de 0 a 3: compras[0], tipos)
compras[1], compras[2] e compras[3] • notas[2] = x + notas[3]
• A função len() retorna o número de elementos da lista • if notas[3] > 60:

• Ex: somar todos os elementos de uma lista

0 1 2 3

Miojo Ovo Leite Pão

compras

2
23/11/2016

Percorrendo uma lista Percorrendo uma lista

• Podemos usar um comando de repetição (preferencialmente o for) • Podemos usar um comando de repetição (preferencialmente o for)
para percorrer a lista de 2 formas para percorrer a lista de 2 formas
• Forma 1 • Forma 2
• Percorrer os índices e elementos • Percorrer apenas os elementos. Isso evita manipular explicitamente o índice

Exemplo Exemplo

Saída Saída

Listas - Problema Listas - Solução

• Voltando ao problema anterior • Um algoritmo para esse problema usando listas:


• leia as notas de uma turma de cinco estudantes e depois imprima as notas
que são maiores do que a média da turma

Listas - Solução Exercício

• Se ao invés de 5, fossem 100 alunos?: • Exercício


• Para uma lista contendo 5 números inteiros, formular um algoritmo que
determine o maior elemento desta lista

3
23/11/2016

Exercício - solução Acessando seus elementos

• Exercício • As listas suportam acesso a sub-listas, isto é, a certos conjuntos de


• Para uma lista contendo 5 números inteiros, formular um algoritmo que índices
determine o maior elemento desta lista • lista[i:j]
• seleciona a sub-lista dos índices i até j-1
• lista[i:]
• seleciona a sub-lista dos índice i até o final
• lista[:j]
• seleciona a sub-lista do início até o índice j-1
• lista[i:j:k]
• seleciona a sub-lista dos índices i até j-1, indo de k em k
• i, i+k, i+2k, ..., j-1

Acessando seus elementos Acessando seus elementos

• Selecionando sub-listas de elementos • Listas são objetos mutáveis


• Podemos acessar qualquer elemento ou sequência de elementos e modificá-
los
• Os elementos de uma lista podem possuir qualquer tipo

Acessando seus elementos Concatenação e repetição de listas

• Podemos também associar o valor de cada posição da lista a uma • Podemos unir/concatenar duas listas para formar uma nova usando o
variável sem precisar especificar os índices usando o recurso de operador de +
unpacking • Podemos criar uma lista a partir da repetição de outra usando o
• Basta definir uma lista de variáveis, entre colchetes, que receberá o conteúdo operador de *
da lista

4
23/11/2016

Removendo elementos da lista Copiando uma lista

• Podemos remover um ou mais elementos de uma lista de duas • A operação de atribuição não cria uma cópia do objeto!
maneiras • Em Python, listas são objetos. Se atribuirmos uma lista a outra, ambas irão se
• Usando o operador del referir ao mesmo objeto
• Atribuindo uma lista vazia àquela posição

lista lista1

33 4 6 -2 1

37189712

Copiando uma lista Copiando uma lista

• Para copiar uma lista, o correto é utilizar [:] na operação de • A operação de atribuição não cria uma cópia do objeto!
atribuição • Em Python, listas são objetos. Se atribuirmos uma lista a outra, ambas irão se
referir ao mesmo objeto

lista
33 4 6 -2 1

36998160

lista1
33 4 6 -2 1

37415712

Procurando um elemento na lista Métodos sobre listas

• O operador in permite verificar se um determinado elemento está • Uma lista é uma classe e, portanto, possui diversos métodos já
presente ou não em uma lista definidos
• Um dos jeitos mais simples de manipular listas é utilizar os métodos que já
fazem parte dela
• Esses métodos permitem executar diversas tarefas
• Ordenação, inserção, remoção, etc
• Esses métodos modificam o conteúdo original da lista

5
23/11/2016

Métodos sobre listas Métodos sobre listas

• Forma geral de uso dos métodos • Exemplos


• lista.nome-método()
• Alguns métodos
• sort(): ordena os elementos da lista
• append(x): insere um elemento x no final da lista
• insert(pos,x): insere um elemento x na posição pos
• remove(x): remove o elemento x da lista
• pop(pos): remove e retorna o elemento da posição pos

Lista aninhadas Lista aninhadas

• Uma lista pode armazenar qualquer tipo de dado • Para criar uma lista aninhada, basta definir cada elemento como uma
• As listas podem inclusive conter outras listas nova lista
• Podemos assim representar tabelas ou matrizes • Os elementos são acessados especificando um par de colchetes e índice para
cada dimensão da lista
• A numeração começa sempre do zero
0 1 ... 49

0 99
0 1 2
1 0 1 ‘oi’ 3

... 1 4 5 6

mat[0][1] 2 7 8 9

99

Lista aninhadas Lista aninhadas

• Podemos também incluir novas linhas e colunas em cada lista • Podemos remover um ou mais elementos de uma lista aninhada de
• Recomenda-se, neste caso, usar os métodos ao invés do operador de maneira similar as listas tradicionais
concatenação • 1 índice: a linha inteira é removida
• Nas listas aninhadas, não é necessários que as linhas tenham sempre o • 2 índices: o elemento da linha e coluna é removido
mesmo número de colunas

6
23/11/2016

Lista aninhadas

• Todas as operações feitas em listas aninhadas devem considerar o


fato de que temos agora uma lista dentro de outra

Strings

Definição Definição

• Cadeia de caracteres ou String • Na inicialização de uma string podemos usar “aspas duplas” ou
• Sequência de caracteres adjacentes na memória ‘aspas simples’
• Permite representar palavras ou frases dentro do computador • O tipo de uma string é a classe str
• Em outras palavras, strings são listas. A diferença é que cada posição da lista
contém um único caractere

Definição Acessando seus elementos

• Podemos utilizar 3 aspas simples na inicialização de uma string. Neste • Podemos tratar uma string como uma entidade única
caso, será possível criar uma string contendo mais de uma linha • Mas também podemos acessar seus caracteres individualmente
• As quebras de linha também serão armazenadas dentro da string. usando colchetes e o índice da posição

0 1 2 3 4 5
P y t h o n

7
23/11/2016

Acessando seus elementos Acessando seus elementos

• Tamanho da string • Não podemos acessar um índice da string que seja maior ou igual ao
• A função len() retorna o tamanho de uma string tamanho da string
• Neste caso, a função retornará 6, que é o número de caracteres na palavra • Os índices dos caracteres de uma string sempre começam em ZERO e vão até
TAMANHO-1

0 1 2 3 4 5 0 1 2 3 4 5
P y t h o n P y t h o n

Acessando seus elementos Acessando seus elementos

• Podemos utilizar índices negativos para acessar os caracteres de uma • Como nas listas, as strings também suportam acesso a sub-strings ou
string sub-cadeias de caracteres
• Neste caso, a contagem começa do último caractere da string • texto[i:j]
• seleciona a sub-cadeia dos índices i até j-1
• texto[i:]
• seleciona a sub-cadeia dos índice i até o final
• texto[:j]
• seleciona a sub-cadeia do início até o índice j-1
0 1 2 3 4 5
• texto[i:j:k]
P y t h o n • seleciona a sub-cadeia dos índices i até j-1, indo de k em k
• i, i+k, i+2k, ..., j-1
-6 -5 -4 -3 -2 -1

Acessando seus elementos Percorrer uma string

• Selecionando sub-strings ou sub-cadeias de caracteres • Podemos percorrer uma string de duas formas
• Usando um ciclo sobre os índices

Saída
• Usando um ciclo sobre a sequência

8
23/11/2016

Concatenação de string Concatenação de string

• Podemos unir/concatenar duas string para formar uma nova de duas • Podemos acessar os caracteres individualmente de uma string, mas
maneiras não podemos modificá-los
• Usando o operador de soma “+” • Felizmente, podemos construir uma outra string via concatenação
• Separando as strings por vírgula no momento da impressão (um espaço será
automaticamente inserido entre elas)

Sequências de escape Sequências de escape

• Também chamados de códigos de barra invertida • As sequências de escape são executas sempre que uma barra
• Permitem o envio de caracteres de controle não gráficos para invertida é encontrada
dispositivos de saída • Para evitar que as sequências de escape funcionem, basta definir a
string como uma Raw String
• Para isto basta preceder a string com r ou R
Código Comando

\n nova linha

\t tabulação

\v tabulação vertical

\b retrocesso

\’ aspas simples

\” aspas duplas

\\ barra invertida

Formatação de strings Formatação de strings

• Também é possível realizar a formatação de string utilizando o • Na string da esquerda, o conjunto de Código Tipo de formatação
operado % caracteres depois do % define o tipo
%c caractere
• Forma geral de formatação a ser executada
• string-a-ser-formatada % (lista-de-valores) %s string

• Todo conteúdo da string da esquerda precedido por um % é %d inteiro

substituído por um valor a direita (entre parênteses) %u inteiro sem sinal

%f reais (ponto flutuante)

%.Nf reais com N casas decimais

%% símbolo de %

9
23/11/2016

Manipulando strings Manipulando strings

• Podemos procurar uma string menor dentro de uma string maior • Procurando uma string menor dentro de uma string maior
• Ex: palavra dentro de uma frase • No caso, as string devem estar escritas exatamente iguais
• Para isso, basta utilizar o operador in. Forma geral
• string1 in string2

• O resultado será True se a string1 existir dentro da string2, e False,


Exemplos Saída
caso contrário

Manipulando strings Manipulando strings

• Também podemos utilizar os operadores relacionais (==, !=, <, <=, >, • Nas comparações, letras maiúsculas e minúsculas são consideradas
>=) para comparar duas string diferentes
• A comparação é feita usando a ordem lexicográfica (i.e. ordem do dicionário)

Exemplos Saída

Exemplo Saída

Manipulando strings Métodos sobre strings

• Essa diferença entre maiúsculas e minúsculas ocorre pois a • Uma string é uma classe e, portanto, possui diversos métodos já
comparação é feita pelos códigos numéricos dos caracteres definidos
• Função ord(): código numérico de um caractere • Um dos jeitos mais simples de manipular strings é utilizar os métodos que já
• Função chr(): caractere de um código numérico fazem parte da string
• Esses métodos permitem executar diversas tarefas
• Conversão maiúsculo/minúsculo, localizar e substituir substrings, etc
• Esses métodos nunca modificam o conteúdo original

10
23/11/2016

Métodos sobre strings Métodos sobre strings

• Forma geral de uso dos métodos • Exemplos


• Objeto-string.nome-método()
• Alguns métodos
• lower(): converte para minúsculo
• upper(): converte para maiúsculo
• replace(c1,c2): troca os caracteres c1 por c2
• strip(): remove espaços do início e fim
• split(): separa uma string por espaços e devolve uma lista de strings
• split(ch): separa uma string usando o caractere ch e devolve uma lista de
strings

11

You might also like