Erros, usos e costumes
Site: | Moodle UFSC - Apoio aos Cursos Presenciais |
Curso: | INE5402-01208C|INE5603-01238A (20251) - Programação Orientada a Objetos I |
Livro: | Erros, usos e costumes |
Impresso por: | Usuário visitante |
Data: | sábado, 10 mai. 2025, 03:34 |
Compreensão de listas com "input().split()"
Considere as expressões:
lista = [x for x in input().split()]
lista = [str(x) for x in input().split()]
- Nos dois casos o uso de compreensão de listas é desnecessário visto que a expressão "input().split()" já gera uma lista de strings.
- No segundo caso a função "str" não tem efeito visto que x já denota uma string.
A expressão fica melhor escrita apenas como:
lista = input().split()
Transformação de lista em conjunto e vice-versa
Considere o trecho de código abaixo que copia os elementos de uma lista para um conjunto, com consequente eliminação de repetições:
lista = [10, 50, 30, 10]
conjunto = set()
for x in lista:
conjunto.add(x)
Este código pode ser escrito de forma mais simples por meio do uso da função "set", passando a lista como argumento:
lista = [10, 50, 30, 10]
conjunto = set(lista)
O mesmo comportamento é aplicável para copiar elementos de uma lista para um conjunto, cujo código pode ser escrito como:
conjunto = {'João', 'Maria', 'Abel', 'Joana'}
lista = list(conjunto)
Se a intenção é em seguida percorrer esta lista para reaiizar alguma operação sobre os elementos (imprimir, por exemplo), o código pode ser escrito como:
nomes = {'João', 'Maria', 'Abel', 'Joana'}
for nome in list(nomes):
print(nome)
Eliminar repetições de uma lista e ordená-la
Considere o trecho de código abaixo que elimina as repetições de uma lista e em seguida ordena-a:
produtos = ['rabanete', 'alface', 'limão', 'cenoura', 'alface', 'rúcula', 'rabanete']
copia_produtos = list()
for prod in produtos:
if prod not in copia_produtos:
copia_produtos.append(prod)
copia_produtos.sort()
Este código poder ser escrito de forma mais simples utilizando a função "set", a exemplo de:
produtos = ['rabanete', 'alface', 'limão', 'cenoura', 'alface', 'rúcula', 'rabanete']
copia_produtos = list(set(produtos))
copia_produtos.sort()
ou, então:
produtos = ['rabanete', 'alface', 'limão', 'cenoura', 'alface', 'rúcula', 'rabanete']
copia_produtos = sorted(set(produtos))
Se a intenção é em seguida percorrer esta lista para reaiizar alguma operação sobre os elementos (imprimir, por exemplo), o código pode ser escrito como:
produtos = ['rabanete', 'alface', 'limão', 'cenoura', 'alface', 'rúcula', 'rabanete']
for prod in sorted(set(produtos)):
print(prod)
Imprimir lista de strings
Tendo uma lista de nomes, o código abaixo imprime os nomes um após o outro em linhas consecutivas:
nomes = ['João', 'Maria', 'Abel', 'Joana']
for nome in nomes:
print(nome)
Se quizermos imprimir os todos os nomes numa mesma linha, um após o outro separados por um espaço em branco, podemos escrever:
nomes = ['João', 'Maria', 'Abel', 'Joana']
print(*nomes)
Mas se desejarmos separar os nomes por uma vírgula seguida de um espaço em branco, uma opção é:
nomes = ['João', 'Maria', 'Abel', 'Joana']
for nome in nomes[:-1]:
print(nome, end=', ')
print(nomes[-1])
ou, de forma mais simples, usar a função "join" como em:
nomes = ['João', 'Maria', 'Abel', 'Joana']
print(', '.join(nomes))