Мне кажется, вы должны иметь возможность проверить каждый элемент, уже находящийся в наборе, и, если абсолютная разница между этим элементом и элементом, который вы пытаетесь добавить, меньше порогового значения, просто не добавляйте его.
Примерно так должно получиться:
def AddToSetWithThreshold(pSet, pValue, pThreshold):
vList = [entry for entry in pSet if abs(pValue - entry) < pThreshold]
if len(vList) == 0:
pSet.add(pValue)
a = set([1, 2, 3]) ; print(a)
AddToSetWithThreshold(a, 1.00001, 1e-4) ; print(a)
AddToSetWithThreshold(a, 1.00001, 1e-6) ; print(a)
Поскольку первое добавление слишком близко к 1
, а второе - нет, это приведет кв следующем выводе:
set([1, 2, 3])
set([1, 2, 3])
set([1, 2, 3, 1.00001])