- fatias de listas;
- cuidado com atribuição de listas;
- clone (= cópia) de listas;
- cuidados com a questão Referências versus clones no que diz respeito a listas como argumentos de funções.
Muitas vezes, ao invés de considerar a lista completa, é necessário consider apenas um pedaço contínuo da lista, que podemos definir por 2 índices que marcam o início e o fim desse pedaço, que chamamos de fatia da lista.
Em Python, uma fatia de uma lista é definida colando o ínicio e o fim entre colchetes, separados por :, como:
>>> primos = [2, 3, 5, 7, 11]
>>> primos[1:2]
[3]
>>> primos[2:4]
[5, 7]
>>> primos[:3] # observe que o início não precisa ser definido
[2, 3, 5]
>>> primos[3:] # observe que o fim não precisa definido
[7, 11]
>>> primos[:]
[2, 3, 5, 7, 11]
Atribuição de listas criam uma nova referência para lista, não criam um clone (= cópia) da lista.
(clonar_uma_lista_0)
Algumas maneiras de clonarmos uma lista são:
usando fatiamento (= slice); está é a forma pythonica:
lista_2 = lista_1[:]escrevendo uma função; está é a forma pedagógica:
def clone_lista(lista): '''(list) -> list Recebe uma lista e retorna um clone dessa lista. ''' clone = [] for objeto in lista: clone.append(objeto)) return clone
Exemplo de clonagem com fatiamento:
(clonar_uma_lista_1)
Exemplo de clonagem com uma função:
(clonar_uma_lista_2)
Escreva um programa que dados um número inteiro n e uma sequência com n números inteiros, imprimi-los eliminando as repetições.
Escreva uma solução que usa a função pertence() do exercício anterior.
Escreva uma solução que usa as construções
if item in lista:
|
| bloco de comandos a serem executados
| se item pertence a lista
|
if item not in lista:
|
| bloco de comandos a serem executados
| se item nao pertence a lista
|
if not item in lista:
|
| bloco de comandos a serem executados
| se item nao pertence a lista
|
(aula10_ex102_tentativa)
Escreva um programa que dados um número inteiro n e uma sequência com n números inteiros, conta e imprime o número de vezes que cada número ocorre na sequência.
Escreva uma solução que usa a função indice() do exercício anterior.
(aula10_ex104_tentativa)
Usando a função do exercício anterior, escreva um programa que leia n>0 e uma sequência com n números reais, e determina um segmento de soma máxima.
Na sequência
5 -2 -2 -7 3 14 10 -3 9 -6 4 1
a soma máxima de um segmento é 3+14+10-3+9 = 33.
(aula10_ex106_tentativa)
A leitura e vídeos sugeridos aqui, em geral, contém (muito?) mais tópicos do que os que vistos durante a aula. Os tópicos não vistos na aula serão cobertos em algum momento mais oportuno.
Leitura das seções:
do capítulo Listas do livro interativo Como pensar como um Cientísta da Computação.