Python有一個range
方法,它允許這樣的東西:如何做一個相反的「範圍」,即根據一組數字創建一個緊湊的範圍?
>>> range(1, 6)
[1, 2, 3, 4, 5]
我要找的是種相反的:取號的列表,並返回開始和結束。
>>> magic([1, 2, 3, 4, 5])
[1, 5] # note: 5, not 6; this differs from `range()`
這是很容易爲上述示例的事,但是能夠允許的間隙或多個範圍爲好,在返回的範圍在一個PCRE狀字符串格式?事情是這樣的:
>>> magic([1, 2, 4, 5])
['1-2', '4-5']
>>> magic([1, 2, 3, 4, 5])
['1-5']
編輯:我正在尋找一個Python的解決方案,但我歡迎其他語言的工作的例子也是如此。這更多的是找出一個優雅,高效的算法。獎金問題:是否有任何編程語言有一個內置的方法呢?
我有一個懷疑,有沒有比在列表中,這是很容易在你自己寫的迭代更好的辦法。 – trutheality 2012-02-27 19:02:14
@trutheality我也是,所以這個問題。我希望能在這裏找到一個優雅的解決方案。手指交叉! – 2012-02-27 19:05:00