Introdução à programação e aos algoritmos
5.5 Somando e Multiplicando Listas
Todos os exercícios a seguir devem ser feitos por meio da lista por compreensão.
EXERCÍCIO 5.7
Escreva um programa para gerar uma lista com o quadrado dos números pares
entre 10 e 20 (inclusive).
EXERCÍCIO 5.8
Escreva um programa para gerar uma lista com o quadrado dos números ímpares
de 0 a 9, como no Programa 5.16, porém não use ltros. Use apenas o comando
range() para controlar a geração da sequência de números ímpares.
EXERCÍCIO 5.9
Escreva um programa que crie uma lista com o cubo dos números entre 1 e 10,
ambos inclusive.
EXERCÍCIO 5.10
Escreva um programa que crie uma lista com os 10 primeiros múltiplos de 7.
5.5 SOMANDO E MULTIPLICANDO LISTAS
Assim como os tipos de dados mais simples, as listas em Python oferecem algumas operações bastante úteis para sua manipulação. Fique atento, pois essas operações são fornecidas apenas pela linguagem Python. Qualquer outra linguagem de programação terá outra forma de fazer o que será apresentado aqui.
Duas operações básicas são a soma e a multiplicação. Mas o
que significa somar ou multiplicar duas listas? A soma irá juntar, ou, em uma linguagem mais técnica, concatenar duas ou mais listas, enquanto a multiplicação irá repetir os valores da lista de acordo com um número determinado.
No caso da soma, a sequência de comandos:
lista1 = [1,2,3]
lista2 = [4,5,6]
lista = lista1 + lista2
print (lista)
Vai imprimir a lista
[1, 2, 3, 4, 5, 6]
Você também pode fazer a concatenação diretamente:
lista = [1,2,3] + [4,5,6]
print (lista)
Obviamente, a ordem da soma altera o resultado:
lista = [4,5,6] + [1,2,3]
print (lista)
fornece
[4, 5, 6, 1, 2, 3]
A multiplicação em listas só pode ser feita entre uma lista e um
inteiro. Seria um erro tentar multiplicar uma lista por outra. O inteiro irá determinar quantas vezes o conteúdo da lista será repetido. Assim, o programa
lista = [1,2,3]
lista *= 3 # ou lista = 3 * lista
print (lista)
■ Programa 5.18: Programa de multiplicação de lista.
gera a saída
[1, 2, 3, 1, 2, 3, 1, 2, 3]
Embora faça sentido dividir uma lista em sublistas, Python não implementa essa operação sobre listas. O motivo é simples: enquanto concatenar listas para formar uma única lista é uma operação evidente, dividir uma lista em sublistas permite uma infinidade de opções e Python não teria como saber como dividir a sua lista.
Existem diversas maneiras de dividir uma lista de 5 elementos, por exemplo. Você pode fazer 2 listas, uma com 3 e outra com 2 elementos. Ou pode fazer uma com 1 e outra com 4. Quais elementos iriam para cada lista? Qual deveria ser a escolhida? Para evitar ambiguidades e imprecisões, Python emitirá uma mensagem de erro se você tentar dividir uma lista.
Você também não vai poder subtrair listas. Mas como? Por que não? Afinal, é uma operação comum, eliminar elementos de uma lista. É possível imaginar a situação. Você vai ao supermercado com uma lista e descobre que já tinha comprado alguns itens que estavam na lista da semana passada. Mas, note bem, isto não é a mesma coisa que subtrair uma lista de outra. Você quer é achar a diferença entre as duas listas. Isso envolve processamento, percorrer ambas as listas eliminando o que for comum, uma operação que também não pode ser implementada sem ambiguidades.
Para encontrar diferenças entre duas listas, ou seja, uma lista com elementos que estão em uma lista mas não estão em outra, faça isso com o recurso da lista por compreensão:
a = [2,3,4,5,5,4,7]
b = [7,4,5]
lista_nova = [x for x in a if x not in b] print (lista_nova)
■ Programa 5.19: Programa de diferença de lista.
O resultado da execução do Programa 5.19 é: [2, 3]