Я смог сделать истинное понимание по этому вопросу:
>>> def f(s):
return sum(((list(range(*[int(j) + k for k,j in enumerate(i.split('-'))]))
if '-' in i else [int(i)]) for i in s.split(',')), [])
>>> f('1,2,5-7,10')
[1, 2, 5, 6, 7, 10]
>>> f('1,3-7,10,11-15')
[1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15]
другой ответ, который претендовал на понимание, был просто циклом for, потому что окончательный список был отброшен,:)
Для python 2 вы даже можете удалить вызов на list
!