Skip to content

Instantly share code, notes, and snippets.

@dunossauro
Last active October 2, 2024 12:32
Show Gist options
  • Save dunossauro/8314b348615b81ee50de88f7bba914fc to your computer and use it in GitHub Desktop.
Save dunossauro/8314b348615b81ee50de88f7bba914fc to your computer and use it in GitHub Desktop.
from random import randint
from collections import namedtuple, Counter
num_info = namedtuple('num_info', 'numberr occurrences length'.split())
def get_ten() -> list:
"""
Função que pega 10 números aleatórios entre 0 e 5000
"""
return [randint(0, 5000) for x in range(10)]
def len_number(num: int) -> int:
"""
Função que recebe um número e retorna
a sua quantidade de casas decimais
"""
return len(str(num))
def get_occ(rol: list) -> dict:
"""
Retorna a contagem de elementos em um lista
obs: isso ficou um wrapper do collections.Counter
mas achei melhor deixar explícito
"""
return Counter(rol)
def mount_tuples(rol=get_ten()):
"""
Recebe uma lista de números e
retorna uma namedtuple para cada elemento
contendo seu número, contagem de ocorrências na lista e seu tamanho
@param rol: Caso a lista de números não seja informada
a função get_ten é chamada
"""
ordered = get_occ(rol)
for x in set(rol):
print(num_info(x, ordered[x], len_number(x)))
mount_tuples()
mount_tuples([10, 10, 10, 20, 20, 30])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment