25 lines
652 B
Python
25 lines
652 B
Python
from collections import Callable
|
|
|
|
from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument
|
|
from cpl_query.extension.iterable_abc import IterableABC
|
|
|
|
|
|
def distinct_query(_list: IterableABC, _func: Callable) -> IterableABC:
|
|
if _list is None:
|
|
raise ArgumentNoneException(ExceptionArgument.list)
|
|
|
|
if _func is None:
|
|
raise ArgumentNoneException(ExceptionArgument.func)
|
|
|
|
result = IterableABC()
|
|
known_values = []
|
|
for element in _list:
|
|
value = _func(element)
|
|
if value in known_values:
|
|
continue
|
|
|
|
known_values.append(value)
|
|
result.append(element)
|
|
|
|
return result
|