4. Mais um pouco de Python¶
Nessa aula vamos continuar a nossa revisão de Python e trabalhar um pouco com listas (tipo list), que é uma das principais estruturas nativas do Python.
4.1. Tópicos¶
- listas (tipo list) em Python;
- funções com listas;
- funções mutadoras e não mutadoras; e
- um pouco sobre strings.
4.2. Introdução¶
Uma lista é uma estrutura sequencial indexada que permite armazenar e manipular objetos de qualquer tipo. Para saber mais sobre listas recomendamos a leitura de Lista: estrutura sequencial indexada.
Para ilustrar o uso de listas
vamos usar um programa que realiza a criação, carregamento e varrimento de uma lista em Python.
Esse programa lê um inteiro n
e uma sequência de n
números, armazena-os em uma lista de tamanho n
e imprime a sequência na ordem reversa a da leitura. Por exemplo, para n = 4
e a sequência de números 7, 5, 3, 1
, a saída do programa (o que o programa imprime) deve ser a sequência 1, 3, 5, 7
.
Para visualizar o funcionamento passo-a-passo de programas em Python vamos usar a ferramenta Python Tutor. Essa é uma ferramenta grátis que se sustenta por meio de anúncios. Caso, durante a simulação, seu navegador redirecione para o site do Python Tutor, você pode redimensionar a janela para “esconder” os anúncios.
A seta vermelha indica a próxima instrução a ser executada pelo Python.
Clique no botão Next >
até que a seta chegue ao final do arquivo, linha 22, que chama a função
main()
. Continue clicando em Next >
até chegar na linha 5, que cria a lista vazia seq
, que é uma estrutura dentro da função main()
. Observe que o Python Tutor atualiza o estado do programa após cada instrução, mostrando as variáveis e seus conteúdos.
A linha 6 recebe um inteiro. O Python Tutor abre uma janelinha abaixo do código onde você pode digitar o valor desejado para n
, como, por exemplo, 4. Digite esse valor e clique em Submit
. Continue clicando em Next >
e entrando com os valores desejados até o programa terminar.
Observe também que a saída do programa, resultado dos comandos print
, aparecem em uma área no topo à direita da janela do Python Tutor.
4.3. Função mutadora¶
Quando trabalhamos com estruturas de dados como listas, que podem ser muito muito grandes, é comum tentar “economizar” memória modificando a lista de entrada ao invés de criar uma nova. Vamos chamar
essas funções de mutadoras, pois modificam a estrutura original. A função inverta()
, que você escreveu anteriormente, é não mutadora.
Observe que a sua função inverta()
retorna uma lista, enquanto
a função inverta_mutadora()
, mostrada abaixo no Python Tutor, retorna None
.
None
é um objeto do Python que representa algo sem valor. Ela deve retornar None
pois a própria lista de entrada é modificada.
Estude o comportamento dessa função clicando no botão Next >
.
4.4. Um pouco sobre strings¶
Uma string é uma sequência com um ou mais caracteres, ou seja, é um texto, que pode inclusive ser vazio.
Uma string pode ser delimitada por aspas como "Um string"
ou apóstrofes como 'outra string'
.
Essa flexibilidade permite colocar aspas ou apóstrofes nas strings, como "string com 'apóstrofes' entre apóstrofes."
Essa sequência de caracteres se comporta como uma lista para acessar seus elementos e fatias (intervalos de elementos). Assim como listas, strings podem ser concatenadas usando o operador +
.
O código a seguir ilustra como percorrer uma string pegando fatias de tamanho 10 e, ao final, concatenando as fatias em ordem reversa. Clique em `` Next > `` para executar o programa passo-a-passo.
A grande diferença com listas é que as strings são imutáveis. Assim, mesmo que você precise trocar apenas um caractere de uma string, de “gato” para “rato” por exemplo, o seguinte trecho de programa é inválido:
animal = "gato"
animal[0] = "r"
print(animal)
Nesse caso, é necessário criar uma nova string com o valor desejado.
Clique nesse link para saber mais sobre strings.
4.5. Exercícios¶
Escreva uma função que recebe uma lista com números e, usando o comando
for
, procura e retorna o valor mínimo desses números e o índice onde esse valor ocorre. Por exemplo, para a lista[5, 0, 7, -3, 9]
, o menor valor é-3
que ocorre no índice 3.- Dica: em Python, para uma função retornar mais de um valor, basta separar os valores por vírgula.
Escreva uma função que recebe uma lista com strings (palavras) e, usando o comando
for
, procura a palavra de menor ordem alfabética e retorna a palavra e o índice onde ela ocorre. Por exemplo, para a lista["gato", "elefante", "cavalo", "formiga"]
, a “menor” palavra (em ordem alfabética) é “cavalo” que ocorre no índice 2 da lista.Escreva uma função que recebe uma string
texto
e retorna uma lista contendo as palavras dotexto
. Uma palavra é uma sequência de caracteres separada por um ou mais caracteres da listaSEPARADORES = ["\n", "\t", " ", ",", ".", ";"]
.
4.6. Onde estamos e para onde vamos?¶
Continuando a nossa revisão de Python, vimos como manipular listas em Python. Lista é uma estrutura nativa do Python que permite reunir, de forma sequencial, vários elementos que podem ter tipos distintos. Vimos que funções mutadoras recebem listas e podem modificar seu conteúdo e vimos que strings são imutáveis.
Na próxima aula, começar a introdução de conceitos de Programação Orientada a Objetos. Esses conceitos permitem abstrair outras estrutura de dados para que possamos focar no uso e não na representação dessas estruturas. Como exemplo de motivação, vamos utilizar o problema de cálculo de números harmônicos.
4.7. Para saber mais¶
Para saber mais sobre Python:
- Como Pensar como um Cientista da Computação - Aprendendo com Python: Edição interativa que é uma tradução do livro How to Think Like a Computer Scientist - Learning with Python: Interactive Edition.
- Estudo dirigido: aulas interativas do curso de Introdução à Computação em Python.
- Lista.
- Strings e Arquivos.