Say I have a list of 50 random numbers. I want to group the numbers in a way that each subset has a min-max gap less than a cutoff 0.05. Below is my code.
import random
def cluster(data, cutoff):
data.sort()
res = []
old_x = -10.
for x in data:
if abs(x - old_x) > cutoff:
res.append([x])
else:
res[-1].append(x)
old_x = x
return res
cutoff = 0.05
data = [random.random() for _ in range(50)]
res = cluster(data, cutoff)
Check if all subsets have min-max gaps less than the cutoff:
print(all([(max(s) - min(s)) < cutoff for s in res]))
Output:
False
Obviously my code is not working. Any suggestions?
Following @j_random_hacker's answer, I simply change my code to
def cluster(data, cutoff):
data.sort()
res = []
old_x = -10.
for x in data:
if abs(x - old_x) > cutoff:
res.append([x])
old_x = x
else:
res[-1].append(x)
return res
Now it is working as expected
>>> print(all([(max(s) - min(s)) < cutoff for s in res]))
True