#!/usr/bin/env python3 class NotAListError(TypeError): pass def convert_any_order(lst): if type(lst) != list: raise NotAListError('the argument should be a list') lst.sort() lst.append(None) NOTSEQ, SEQ = 0, 1 prev_state = NOTSEQ itr = iter(lst) item = next(itr) out = [] for nextitem in itr: state = SEQ if (nextitem is not None and nextitem - item == 1) else NOTSEQ if state == SEQ: if prev_state == NOTSEQ: seq_start = item elif state == NOTSEQ: if prev_state == SEQ: out.append(str(seq_start) + ':' + str(item)) elif prev_state == NOTSEQ: out.append(str(item)) prev_state, item = state, nextitem return out
[guest@localhost timecmp]$ ./timecmp.py
[0.6980701190004766, 0.6938450420002482, 0.6918122200004291]
[0.6967832520003867, 0.7003876839999066, 0.7101401099998839]
[0.7023664429998462, 0.703262595000524, 0.7029014090003329]
[0.6880042000002504, 0.6855810509996445, 0.6881532290008181]
[0.9738981830005287, 0.9772623899998507, 0.9726100779998887]
[guest@localhost timecmp]$
1) со срезом
2) со срезом через itertools
3) без среза
4) через iter()
5) твой