Você está na página 1de 22

Módulo 6: Listas

PROGRAMAÇÃO DE COMPUTADORES I

Professor: Mayksoel M. de Freitas

Universidade Federal do Oeste da Bahia - UFOB


Centro das Ciências Exatas e das Tecnologias - CCET

2022-2

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 1 / 22


Introdução
Lista é um tipo de variável que armazena um conjunto de valores, onde
cada valor é identificado por um índice;

O índice varia entre 0 (zero) e n − 1, onde n é o “tamanho da lista”;


Os valores que compõem uma lista são chamados elementos;
Uma lista pode conter zero (lista vazia) ou mais elementos (1, 2, · · · );
Os elementos podem ser de um mesmo tipo ou de tipos diversos;
Elementos podem ser adicionados ou removidos de uma lista.

Existem várias maneiras de criar uma nova lista; a mais simples é envol-
ver os elementos em colchetes ([ ]).

Exemplo: Listas com elementos de diversos tipos


L1 = [5,1,11,15,7]
L2 = [2.5,3.3,5.1,9.8,7.7,3.9,5.6]
L3 = [’UFOB’,’UFBA’,’UFRB’,’UFSB’]
L4 = [1,’UFOB’,[1,5,7],3.7,True]
L5 = []
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 2 / 22
Criando Listas e Acessando seus Elementos
Criando uma lista de strings e acessando seus elementos:

Exemplo: Lista de strings


L = [’Ana’, ’Luan’,’Sara’,’Pedro’]
print(L[0]) # Ana
print(L[3]) # Pedro

Listas que contém inteiros consecutivos são comuns, e uma maneira simples
de criá-las é utlizar a função range() e a declaração list():

Exemplo 1: Lista dos pares entre 0 e 100


P = list(range(0,101,2))
print(P)

Exemplo 2: Lista dos múltiplos de 3 entre 45 e 60


M = list(range(45,61,3))
print(M) # [45, 48, 51, 54, 57, 60]
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 3 / 22
Listas e o Laço for
O laço for em Python foi projetado especialmente para “percorrer” facilmente
os elementos de uma lista.

Para acessar cada elemento de uma lista, sem modificar seus valores, do
primeiro até o último elemento, podemos utilizar o laço for da seguinte forma:

Sintaxe
for variável in lista:
bloco_de_comandos

A “variável” recebe progressivamente cada um dos elementos da “lista”.

Exemplo 1: Maior valor


L = [7,16,22,4,2,25]
m = L[0]
for i in L:
if i>m:
m = i
print(f’Maior = {m}’)
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 4 / 22
Listas e o Laço for
Exemplo 2: Média dos valores
N = [6.0,7.5,5.2,8.8,9.5]
s,c = 0,0
for i in N:
s += i
c += 1
m = s/c
print(f’Média = {m:.2f}’)

Exemplo 3: Contar o número de múltiplos de um valor na lista


x = int(input(’Valor inteiro positivo: ’))
L = [7,21,28,13,15]
c = 0
for i in L:
if i%x==0:
c +=1
print(f’Quantidade de múltiplos de {x} = {c}’)

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 5 / 22


Listas e o Laço for
Para acessar cada elemento de uma lista e modificar seus valores ou acessar
um grupo específico de elementos de uma lista, ou ainda, acessar todos os
elementos de uma lista em uma ordem qualquer, podemos utilizar o laço for
da seguinte forma:

Sintaxe
for variável in range(n):
bloco_de_comandos

onde n é o “comprimento” da lista (quantidade de elementos). A “variável”


recebe progressivamente cada um dos índices dos elementos da “lista”.

Exemplo 1: Elevar ao quadrado os valores de uma lista


L = [3,7,5,2]
for i in range(4):
L[i] *= L[i]
print(L) # [9, 49, 25, 4]

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 6 / 22


Listas e o Laço for
A função len() retorna o comprimento de uma lista. É uma boa idéia utilizar
este valor como o limite superior para um laço for (quantidade de elementos)
ao invés de uma constante, uma vez que, se o tamanho da lista mudar, o laço
continuará funcionando corretamente sem mudanças na sua estrutura!

Exemplo 2: Soma dos elementos de índice ímpar menos a soma


dos elementos de índice par
L = [3.5,5.2,1.3,4.3,2.2,6.5]
si,sp = 0,0
for i in range(len(L)):
if i%2==1:
si += L[i]
else:
sp += L[i]
r = si - sp
print(f’Resultado = {r}’)

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 7 / 22


Listas e o Laço while
O laço while também pode ser usado para “percorrer” os elementos de uma
lista utilizando uma variável que recebe progressivamente cada um dos índi-
ces dos elementos da lista.

Exemplo: Média dos valores


N = [6.0,7.5,5.2,8.8,9.5]
c = len(N) # comprimento da lista
s = 0 # acumulador
i = 0 # índice (contador)
while i<c:
s += N[i]
i +=1
m = s/c
print(f’Média = {m:.2f}’)

Pela simplicidade, o laço for é utilizado, na maioria das vezes, para acessar
os elementos de uma lista em detrimento do laço while.

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 8 / 22


Operações com Listas
O operador + concatena listas.

Exemplo: Concatenando listas


L1 = [5,2,7,1]
L2 = [3,6,4]
L3 = L1 + L2
print(L3) # [5, 2, 7, 1, 3, 6, 4]

Similarmente, o operador * repete uma lista um número dado de vezes.

Exemplo: Replicando listas


L1 = [5,2,7]
L2 = 3*L1
print(L2) # [5, 2, 7, 5, 2, 7, 5, 2, 7]

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 9 / 22


Carregando Listas

A primeira opção quando desejamos “carregar” uma lista com valores passa-
dos via teclado, valores aleatórios ou valores calculados por uma expressão
arbitrária é criar uma lista do tamanho desejado com quaisquer valores (zero,
por exemplo) e depois modificá-los.

Uma alternativa interessante, quando sabemos à priori o tamanho da lista, é


utilizar o operador * para criar uma lista do tamanho necessário.

Exemplo: Criando uma lista com valores passados via teclado


n = int(input(’Números de elementos: ’))
A = n*[0]
for i in range(n):
A[i] = float(input(f’[{i}]: ’))
print(A)

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 10 / 22


Adição de Elementos em Listas
Outra opção, quando não sabemos à priori o tamanho da lista, é criar uma
lista vazia ([ ]) e ir adicionando elementos à lista.

Para adicionar um elemento ao final de uma lista podemos utilizar o método


append.
Sintaxe
lista.append(elemento)

Exemplo 1: Lista com valores positivos (termina quando for


digitado um número negativo ou zero)
L = []
while True:
n = float(input(’Digite um número >0 (<= 0: fim): ’))
if n<=0:
break
L.append(n)
print(L)
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 11 / 22
Adição de Elementos em Listas
Exemplo 2: Lista com n valores inteiros aleatórios de 0 à 100
from random import randint
n = int(input(’Números de elementos: ’))
L = []
for i in range(n):
x = randint(1,100)
L.append(x)
print(L)

Podemos utilizar também o operador + .

Exemplo: Lista de strings (termina quando for digitado zero)


L = []
while True:
n = input(’Digite um nome (ou zero para terminar): ’)
if n==’0’:
break
L += [n]
print(L)
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 12 / 22
Adição de Elementos em Listas
Para adicionar um elemento em uma posição qualquer de uma lista utilizamos
a método insert.
Sintaxe
lista.insert(indice, elemento)

Exemplo
L = [2,4,6,8]
L.insert(3,7)
print(L) # [2, 4, 6, 7, 8]
L.insert(0,1)
print(L) # [1, 2, 4, 6, 7, 8]
L.insert(2,3)
print(L) # [1, 2, 3, 4, 6, 7, 8]
L.insert(4,5)
print(L) # [1, 2, 3, 4, 5, 6, 7, 8]

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 13 / 22


Verificando a Existência de um Elemento na Lista

Podemos verificar a existência de um elemento em uma lista utilizando a ins-


trução in (ou not in).

Exemplo
L = [’RJ’,’SP’,’BA’,’RJ’,’RS’,’BA’,’RJ’,’MG’]
a = ’RS’ in L
b = ’SC’ in L
c = ’ES’ not in L
d = ’MG’ not in L
print(a) # True
print(b) # False
print(c) # True
print(d) # False

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 14 / 22


Remoção de Elementos em Listas
Para remover um elemento de uma lista podemos utilizar o método pop.
Sintaxe
lista.pop(indice)

Obs: Caso não seja especificado um índice, remove o último item da lista.
Podemos utilizar também a instrução del.

Sintaxe
del lista[indice]

Exemplo
L = [7,4,9,5,10,15,16,3,2,18]
L.pop(6)
L.pop()
del L[3]
print(L) # [7,4,9,10,15,3,2]
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 15 / 22
Remoção de Elementos em Listas
Podemos ainda remover um elemento de uma lista especificando qual ele-
mento desejamos remover. Para isso, utilizamos o método remove.

Sintaxe
lista.remove(elemento)

Remove a primeira ocorrência do elemento passado como parâmetro (erro se


o elemento não é encontrado).

Exemplo
L = [’UFRB’,’UFOB’,’UFF’,’UFRJ’,’UFOB’,’UFBA’]
L.remove(’UFOB’)
print(L)# [’UFRB’,’UFF’,’UFRJ’,’UFOB’,’UFBA’]
L.remove(’UFF’)
print(L)# [’UFRB’,’UFRJ’,’UFOB’,’UFBA’]
L.remove(’UFRB’)
print(L)# [’UFRJ’,’UFOB’,’UFBA’]

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 16 / 22


Copiando Listas
Se atribuimos uma lista a uma outra variável, não faremos uma cópia da
mesma, mas criaremos uma nova variável que se refere a mesma lista. Assim,
ambas as variáveis serão nomes de uma única lista.
Para fazer uma cópia de uma lista (clonagem) podemos utilizar o operador de
fatiamento : (dois pontos) ou o método copy.

Exemplo:
L1 = [’Portugal’,’Espanha’,’França’,’Itália’]
L2 = L1 # novo nome para L1
L3 = L1[:] # cópia de L1
L4 = L1.copy() # cópia de L1
L1[0] = ’Inglaterra’
L1[1] = ’Alemanha’
print(L1) # [’Inglaterra’,’Alemanha’,’França’,’Itália’]
print(L2) # [’Inglaterra’,’Alemanha’,’França’,’Itália’]
print(L3) # [’Portugal’,’Espanha’,’França’,’Itália’]
print(L4) # [’Portugal’,’Espanha’,’França’,’Itália’]

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 17 / 22


Funções para Listas
No que segue são apresentadas mais algumas funções built-in do Python que
facilitam o trabalho com listas. Para utilizar essas funções não é necessário
importar nenhum módulo.

min(lista) Retorna o menor valor da lista.


max(lista) Retorna o maior valor da lista.
sum(lista) Retorna a soma dos valores da lista.
Tabela 1 : Funções para listas.

Exemplo: Trabalhando com funções para lista


L = [6,12,10,15,11,25,7,18,4,13]
menor = min(L)
maior = max(L)
soma = sum(L)
print(menor) # 4
print(maior) # 25
print(soma) # 121

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 18 / 22


Listas e Funções
Quando passamos uma lista como argumento de uma função, não é realizada
uma cópia da lista para o parâmetro formal da função, e ambas as variáveis (a
lista passada como argumento e o parâmetro da função) se referem a mesma
lista. Dessa forma, mudanças feitas na lista dentro da função serão realizadas
na lista passada como argumento.

Exemplo: Dividi cada elemento de uma lista pelo seu maior


elemento (altera a lista original)
def Normaliza(L):
maior = max(L)
for i in range(len(L)):
L[i] = L[i]/maior
n = int(input(’Números de elementos: ’))
X = []
for i in range(n):
X.append(float(input(f’{i}: ’)))
print(X)
Normaliza(X)
print(X)
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 19 / 22
Listas e Funções
Se queremos modificar uma lista dentro de uma função e também manter a
cópia da lista original passada como argumento, fazemos uma clonagem da
lista passada utilizando o operador de fatiamento. A lista modificada dentro
da função deve ser retornada (utilizando a declaração return).

Exemplo: Dividi cada elemento de uma lista pelo seu maior


elemento (retorna uma nova lista)
def Normaliza(L):
maior = max(L)
for i in range(len(L)):
L[i] = L[i]/maior
return L
n = int(input(’Números de elementos: ’))
X = []
for i in range(n):
X.append(float(input(f’{i}: ’)))
print(X)
Y = Normaliza(X[:])
print(X)
print(Y)
Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 20 / 22
Exercícios

1) Seja a sequência definida por


 ∞
2k
ak = .
2k + 1 k =0

Faça uma função que receba, por parâmetro, um número inteiro positivo n
e retorne uma lista com os n primeiros termos da sequência.

2) Faça uma função que receba, por parâmetro, duas listas V 1 e V 2 de ta-
manho n, cujos elementos são valores reais, representando vetores no Rn ,
~1 e V
V ~ 2 , e retorne o produto escalar entre esses vetores: V
~1 · V
~ 2.

3) Faça uma função que receba, por parâmetro, uma lista L de tamanho n,
cujos elementos são valores reais, e um valor real x e retorne o valor de L
mais próximo (cujo módulo da diferença é menor) de x.

Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 21 / 22


Terminou!!!

Obrigado pela atenção!


Universidade Federal do Oeste da Bahia (UFOB) Programação de Computadores I 2022-2 22 / 22

Você também pode gostar