- un
sorted list
, come questo:[1,2,3,8,10,15,16,17,18,22,23,27,30,31]
- una soglia, come questo:
max_diff = 2
risultato atteso:
- una lista di liste sub; ciascuna lista sotto contiene i valori che la differenza vicini è più piccolo di max_diff, in questo modo:
[[1, 2, 3], [8, 10], [15, 16, 17, 18], [22, 23], [27], [30, 31]]
Ecco come ho fatto questo, mi chiedo se c'è un modo migliore per farlo.
test_list = [1,2,3,8,10,15,16,17,18,22,23,27,30,31]
max_diff = 2
splited_list = []
temp_list = [test_list[0]]
for i in xrange(1,len(test_list)):
if test_list[i] - temp_list[-1] > max_diff:
splited_list.append(temp_list)
temp_list = [test_list[i]]
else:
temp_list.append(test_list[i])
if i == len(test_list) -1:
splited_list.append(temp_list)
print splited_list
recensione Codice http://codereview.stackexchange.com/ – Praveen
Se questo codice è completamente funzionante e vi piacerebbe solo migliorare su di essa, si potrebbe essere meglio la pubblicazione sul CodeReview come Suggerì Praveen. Ma assicuratevi di leggere la loro pagina [Come chiedere] (http://codereview.stackexchange.com/help/how-to-ask). – SuperBiasedMan