ivsatel
>>> b = []
>>> a = ['1','2','3','4','5','7','8','10','12','15','21','22','23','24']
>>> d_int = len(a) // 3
>>> [b.append(int(x)) for x in a if int(x) not in b]
[None, None, None, None, None, None, None, None, None, None, None, None, None, None]
>>> print('{0[0]}-{0[3]}, {1}, {2[0]}-{2[3]}'.format(b[:d_int:], ''.join(str(b[d_int:-d_int])).strip
("]["), b[-d_int:]))
1-4, 5, 7, 8, 10, 12, 15, 21-24
>>>
А надо ‘1-5, 7, 8, 10, 12, 15, 21-24’
Shaman
l = ['1','2','3','4','5','7','8','10','12','15','21','22','23','24']
def rf(a, b):
if abs(int(a[-1]) - int(b)) == 1:
if len(a) > 1 and a[-2] == '-':
a[-1] = b
return a
return a + ['-', b]
return a + [',', b]
print ''.join(reduce(rf, l[1:], [l[0]]))
>>> 1-5,7-8,10,12,15,21-24
Между 7 и 8 должна быть ‘,’
Большое спасибо всем откликнувшимся, очень помогли, тему можно закрывать