Professional Documents
Culture Documents
• 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
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()
• 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
• 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:
0 1 2 3
compras
2
23/11/2016
• 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
3
23/11/2016
• 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
• 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
• 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
• 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
• 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
• 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
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
• 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
• 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
• 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
• 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
• 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)
• 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
• 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
%% símbolo de %
9
23/11/2016
• 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
• 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
• 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
11