Я бы сделал это следующим образом:
Концептуально: допустим, что десять из числа - это количество из 10, которое можно вписать в данное число, например, десять из 111 - это 11, десять из 247 - это 24, а десять - это десять.из 250 - это 25 и так далее.Для наших данных, если число с данными десять уже существует, отбросьте его.
Код:
data = [14,48,81,111,112,113,114,148,179,213,247,279,311,313,314,344,345,346]
cleaned = [i for inx,i in enumerate(data) if not i//10 in [j//10 for j in data[:inx]]]
print(cleaned) #[14, 48, 81, 111, 148, 179, 213, 247, 279, 311, 344]
Обратите внимание, что 10
является только примером значения, которое вы можете заменить другим значением - большим значениемозначает, что больше элементов будет потенциально удалено.Имейте в виду, что особенность этого решения заключается в том, что определенные пары значений (для 10
, например, 110
и 111
) будут обрабатываться как разные и будут оставаться в списке вывода, поэтому вам нужно проверить, не является ли этопроблема в вашем случае использования.