Você está na página 1de 34

ESTRUTURA DE

DADOS 1
AULA 03

FRANK WILLIAN - 2023


AGENDA

01 LISTA

FRANK WILLIAN - 2023


01
LISTA

FRANK WILLIAN - 2023


01 Lista

• A listas (lists) são sequências ordenadas de objetos que podem ser


acessados por meio de seu índice (ou index), um marcador de sua
posição;

• Os objetos de uma lista não precisam ser do mesmo tipo, são


delimitados por colchetes e separados por vírgulas;

lista = [valor_0, …, valor_n]

FRANK WILLIAN - 2023


01 Lista

• As listas são mutáveis, podem ser encolhidas ou expandidas e ter seus


elementos substituídos. Exemplos de listas são dados a seguir:

lista1 = ['Maria', 25] # lista3 é uma lista de listas

↳ [['Maria', 25], ['José', 27]]


lista2 = ['José', 27] print(lista3)
lista3 = [lista1, lista2]

↳ Maria 25
print(lista1[0], lista1[1])
# o 2º elemento da 2ª lista é

↳ 27
print(lista3[1][1])

FRANK WILLIAN - 2023


01 Lista

• Da mesma forma que sequências de caracteres (nas strings), elementos


em listas e tuplas podem ser acessados por meio de seus índices;

• Fatias (ou slices) lista[i:j] se iniciam no i-ésimo elemento, até o j-ésimo,


exclusive, de forma que

len(lista[i:j]) = j-i

• Índices negativos contam a partir do final;

FRANK WILLIAN - 2023


01 Lista
lista4 = [10, 23, 45, 56, # o último elemento

↳ 90
67, 78, 89, 90] lista4[-1]

↳ [23, 45]
lista4[1:3]

↳ [67, 78]
lista4[-4:-2]
# omitindo o 1º índice

↳ [10, 23]
lista4[:2]
# len fornece o número de
elementos na lista

↳ 4
# omitindo o 2º índice len(lista4[3:7])

↳ [67, 78, 89, 90]


lista4[4:]

FRANK WILLIAN - 2023


01 Lista
# um 3º parâmetro indica o "passo"

↳ [10, 45, 67, 89]


lista4[::2]

# um passo negativo indica contagem do fim para o início

↳ [90, 89, 78, 67, 56, 45, 23, 10]


lista4[::-1]

FRANK WILLIAN - 2023


01 Lista

• Vimos que a ausência do 1º índice assume o início, a ausência do 2º


assume o final. O 3º indica para pular um número de elementos;

• Uma função que retorna uma lista (ou outra sequência qualquer) pode
ser diretamente indexada;

FRANK WILLIAN - 2023


01 Lista

• Por exemplo, podemos construir uma função que retorna o mês


abreviado em 3 letras. O índice do mês pode ser atribuído diretamente
ao retorno da função:

def mes_abrev():
m = ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago',
'set', 'out', 'nov', 'dez']
return m

FRANK WILLIAN - 2023


01 Lista
# para pegar o segundo mês:

↳ 'fev'
mes_abrev()[1]

# para pegar o 1º trimestre:

↳ ['jan', 'fev', 'mar']


mes_abrev()[:3]

# para pegar o último trimestre:

↳ ['out', 'nov', 'dez']


mes_abrev()[-3:]

FRANK WILLIAN - 2023


01 Lista

• A s s i m c o m o o c o r re c o m s t r i n g s , l i s t a s p o d e m s e r s o m a d a s
(concatenadas) e multiplicadas por um número (repetidas). O efeito é o
mesmo:

lista5 = [0, 1, 2, 3, 4]
lista6 = [10, 11, 12, 13, 14]

↳ [0, 1,
lista5 + lista6
2, 3, 4, 10, 11, 12, 13, 14]

↳ [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
lista5 * 2

FRANK WILLIAN - 2023


01 Lista

• Uma lista pode ser inicializada vazia ou com um número especificado de


itens:

# elementos podem ser inseridos com o método append


lista_vazia.append(12)
lista_vazia.append(13)

↳ [12, 13]
lista_vazia

FRANK WILLIAN - 2023


01 Lista
# o mesmo efeito seria obtido com concatenação
lista_vazia.clear() # a lista volta a ser vazia
lista_vazia += [12, 13]

↳ [12, 13]
lista_vazia

# lista com 5 entradas


lista_none = [None]*5

↳ [None, None, None, None, None]


lista_none

FRANK WILLIAN - 2023


01 Lista

• Sendo mutáveis listas podem ser alteradas in place tendo qualquer de


seus valores trocados sem a necessidade de criação de nova lista;

• count(item): retorna quantas vezes item aparece na lista;

• index(item): retorna o índice onde item aparece;

FRANK WILLIAN - 2023


01 Lista
palavras = ['palha', 'grande', 'casa', 'dado',
'pequeno', 'coisa', 'gado', 'fato',
'gato', 'lá' ]
print('A terceira palavra é ---| %s |---' %

↳ A terceira palavra é ---| casa |---


palavras[2] )

palavras[2] = 'house'
print('A terceira palavra é ---| %s |---' %

↳ A terceira palavra é ---| house |---


palavras[2] )

FRANK WILLIAN - 2023


01 Lista
# inserindo mais uma 'house'
palavras[3] = 'house'

↳ 2
palavras.count('house')

# o índice de 'coisa'

↳ 5
palavras.index('coisa')

# index retorna a 1ª ocorrência, qndo existem + de 1

↳ 2
palavras.index('house')

FRANK WILLIAN - 2023


01 Lista

• Objetos podem ser inseridos em uma lista, na n-ésima posição, com

lista.insert(n, obj)

• Um membro do lista pode ser removido e retornado com

lista.pop(n)

• Um membro do lista pode ser removido sem ser retornado

lista.remove(obj)
FRANK WILLIAN - 2023
01 Lista
# inserir um objeto na posição 3
palavras.insert(3, 'estrela')

↳ ['pequeno', 'palha', 'lá', 'estrela', 'house',


print(palavras)

'house', 'grande', 'gato', 'gado', 'fato', 'coisa']

# pop extrai e retira elemento no índice dado


saiu = palavras.pop(3)

↳ estrela
print(saiu)

FRANK WILLIAN - 2023


01 Lista
# a lista fica sem esse elemento

↳ ['pequeno', 'palha', 'lá', 'house', 'house',


print(palavras)

'grande', 'gato', 'gado', 'fato', 'coisa']

# se nenhum índice for fornecido o último elemento é


# removido (e retornado)

↳ coisa
palavras.pop()

↳ ['pequeno', 'palha', 'lá', 'house', 'house',


print(palavras)

'grande', 'gato', 'gado', 'fato']


FRANK WILLIAN - 2023
01 Lista
# remove não retorna o item removido
palavras.remove('house')

↳ ['pequeno', 'palha', 'lá', 'house', 'grande',


print(palavras)

'gato', 'gado', 'fato', 'coisa']

# o item deve estar na lista ou exceção será lançada

↳ ValueError: list.remove(x): x not in list


palavras.remove('pedra')

FRANK WILLIAN - 2023


01 Lista

• O método .sort() ordena itens de uma lista. Ele admite os parâmetros


opcionais key, reverse que podem ser usados para fazer ordenamentos
diferentes que o default;

• Por exemplo, se key = len o ordenamento se dará por comprimento


das palavras, da menor para a maior;

• Se, além disso reverse = True o ordenamento se dará no sentido


contrário. Também se pode definir uma função customizada para fazer
essa ordenação;

FRANK WILLIAN - 2023


01 Lista
# ordenar
palavras.sort()

↳ ['coisa', 'fato', 'gado', 'gato', 'grande', 'house',


print(palavras)

'house', 'lá', 'palha', 'pequeno']

# inverter a ordenação
palavras.reverse()

↳ ['pequeno', 'palha', 'lá', 'house', 'house',


print(palavras)

'grande', 'gato', 'gado', 'fato', 'coisa']

FRANK WILLIAN - 2023


01 Lista
palavras.sort(key= len)

↳ ['lá', 'fato', 'gado', 'gato', 'coisa', 'house',


palavras

'house', 'palha', 'grande', 'pequeno']

↳ ['pequeno', 'grande', 'coisa', 'house', 'house',


palavras.sort(key= len, reverse=True)

'palha', 'fato', 'gado', 'gato', 'lá']

FRANK WILLIAN - 2023


01 Lista

• Outra form de ordenar item em qualquer sequência é a função sorted()


que retorna a lista palavras ordenada sem alterar a lista original;

↳ ['coisa', 'fato', 'gado', 'gato', 'grande', 'house',


sorted(palavras) # nesse caso a lista já estava ordenada

'house', 'lá', 'palha', 'pequeno']

FRANK WILLIAN - 2023


01 Lista: métodos
Método Descrição
append() insere elementos no final da lista
clear() remove todos os elementos na lista
copy() retorna uma cópia da lista
count() retorna o número de elementos com valor especificado
extend() insere os elementos de outra lista (ou iterável) ao final da lista
index() retorna o índice do 1º elemento com valor especificado
insert() insere elemento em posição especificada
pop() remove elemento em posição especificada por índice e retorna esse elemento
remove() remove elemento em posição especificada por índice
reverse() inverte a ordem da lista
sort() ordena a lista

FRANK WILLIAN - 2023


01 Lista

• É possível testar se um determinado elemento é membro da lista:

palavras = ['palha', 'grande', 'casa', 'dado',


'pequeno','coisa', 'gado', 'fato',
'gato', 'lá' ]

↳ True
'gado' in palavras

↳ False
'pedra' in palavras

FRANK WILLIAN - 2023


01 Lista
#definimos uma lista de listas (com nome e senha de
# usuários)
usuarios = [
['alberto', '1234'],
['mario', '6282'],
['maria', '5274'],
['joana', '9943']
]
nome = input('Nome do usuário: ')
pin = input('Código PIN: ')
msg = 'Accesso liberado' if [nome, pin] in usuarios
else 'Acesso negado'
print(msg)
FRANK WILLIAN - 2023
01 Lista
# uma entrada de dados que não corresponde a nenhuma


# entrada da lista


Nome do usuário: lucas


Código PIN: 1234
Acesso negado


# dados de usuário cadastrado


Nome do usuário: joana


Código PIN: 9943
Accesso liberado

FRANK WILLIAN - 2023


01 Lista

• A s s i m c o m o e x i s t e u m a f u n ç ã o i n t e r n a l e n ( ) q u e re t o r n a o
comprimento de sequências, temos também max(), min() que retornam
o maior e menor valor dentro da lista. Essas funções funcionam
também com strings, considerada a ordem alfabética;

↳ 3
numeros = [100, 23, 987] print(max(2, 3))

↳ 3
print(len(numeros))

↳ 2
print(min(9, 3, 2, 5))

↳ 987
print(max(numeros))

↳ 23
print(min(numeros))

FRANK WILLIAN - 2023


01 Lista
# min e max fazem comparações entre strings:

↳ ['pequeno', 'palha', 'lá', 'grande', 'gato', 'gado',


palavras

'fato', 'coisa']

↳ 'coisa'
min(palavras)

↳ 'pequeno'
max(palavras)

FRANK WILLIAN - 2023


01 Exercícios

1. Faça um programa que receba a temperatura média de cada mês do


ano e armazene-as em uma lista. Em seguida, calcule a média anual
das temperaturas e mostre a média calculada juntamente com todas
as temperaturas acima da média anual, e em que mês elas ocorreram
(mostrar o mês por extenso: 1 – Janeiro, 2 – Fevereiro, . . . );

2. Inicialize uma lista de 20 números inteiros. Armazene os números


pares em uma lista PAR e os números ímpares em uma lista IMPAR.
Imprima as listas PAR e IMPAR;

FRANK WILLIAN - 2023


01 Exercícios

3. Faça um programa que leia um número indeterminado de notas. Após


esta entrada de dados, faça o seguinte:

• Mostre a quantidade de notas que foram lidas.


• Exiba todas as notas na ordem em que foram informadas.
• Exiba todas as notas na ordem inversa à que foram informadas,
uma abaixo do outra.
• Calcule e mostre a soma das notas.
• Calcule e mostre a média das notas.
• Calcule e mostre a quantidade de notas acima da média calculada.

FRANK WILLIAN - 2023


“A dúvida é o princípio da sabedoria.”
—Aristóteles

FRANK WILLIAN - 2023

Você também pode gostar