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))