Fog*_*ird 29
>>> def f(x):
... result = []
... for part in x.split(','):
... if '-' in part:
... a, b = part.split('-')
... a, b = int(a), int(b)
... result.extend(range(a, b + 1))
... else:
... a = int(part)
... result.append(a)
... return result
...
>>> f('1,2,5-7,10')
[1, 2, 5, 6, 7, 10]
Run Code Online (Sandbox Code Playgroud)
我能够真正理解这个问题:
>>> 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]
Run Code Online (Sandbox Code Playgroud)
另一个具有理解力的答案只是一个for循环,因为最终列表被丢弃了。:)
对于python 2,您甚至可以删除对list!的调用!