十数回の for ループがこの問題の解決策ではないことは確かなので、私はそれに苦労しています。
次のような数字のソートされたリストがあります
numbers = [123, 124, 128, 160, 167, 213, 215, 230, 245, 255, 257, 400, 401, 402, 430]
そして、数字のリストを使用してdictを作成したいのですが、数字の違い(互いに続く)は15以下です。したがって、出力は次のようになります。
clusters = {
1 : [123, 124, 128],
2 : [160, 167],
3 : [213, 215, 230, 245, 255, 257],
4 : [400, 401, 402],
5 : [430]
}
私の現在の解決策は少し醜いです(最後に重複を削除する必要があります…)、Pythonicの方法で実行できると確信しています。
これは私が今していることです:
clusters = {}
dIndex = 0
for i in range(len(numbers)-1) :
if numbers[i+1] - numbers[i] <= 15 :
if not clusters.has_key(dIndex) : clusters[dIndex] = []
clusters[dIndex].append(numbers[i])
clusters[dIndex].append(numbers[i+1])
else : dIndex += 1