##############################################################################
# Parte do livro Introdução à Programação com Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Quarta Edição - Março/2024 - ISBN 978-85-7522-886-9
#
# Site: https://python.nilo.pro.br/
#
# Arquivo: capítulo 10/10.1474 - Sem Título.py
# Página: 364
# Título: Classe ListaÚnica
##############################################################################
class ListaÚnica:
def __init__(self, elem_classe):
self.lista = []
self.elem_classe = elem_classe
def __len__(self):
return len(self.lista)
def __iter__(self):
return iter(self.lista)
def __getitem__(self, posição):
return self.lista[posição]
def índiceVálido(self, índice):
return índice >= 0 and índice < len(self.lista)
def adiciona(self, elem):
if self.pesquisa(elem) == -1:
self.lista.append(elem)
def remove(self, elem):
self.lista.remove(elem)
def pesquisa(self, elem):
self.verifica_tipo(elem)
try:
return self.lista.index(elem)
except ValueError:
return -1
def verifica_tipo(self, elem):
if not isinstance(elem, self.elem_classe):
raise TypeError("Tipo inválido")
def ordena(self, chave=None):
self.lista.sort(key=chave)