### 228. Summary Ranges 题目: 难度: Medium Just collect the ranges, then format and return them. ```python class Solution(object): def summaryRanges(self, nums): """ :type nums: List[int] :rtype: List[str] """ ranges = [] for i in nums: if not ranges or i > ranges[-1][-1] + 1: ranges += [], ranges[-1][1:] = i, return ['->'.join(map(str, r)) for r in ranges] ``` About the commas :-) ``` ranges += [], r[1:] = n, ``` Why the trailing commas? Because it turns the right hand side into a tuple and I get the same effects as these more common alternatives: ``` ranges += [[]] or ranges.append([]) r[1:] = [n] ``` Without the comma, … - ranges += [] wouldn’t add [] itself but only its elements, i.e., nothing. - r[1:] = n wouldn’t work, because my n is not an iterable. Why do it this way instead of the more common alternatives I showed above? Because it’s shorter and faster (according to tests I did a while back). 写到这里可能又有疑问了🤔️,为什么不可以直接写```ranges[-1][1] = i```呢,当然是会报```IndexError: list assignment index out of range```错误啦,那为什么```ranges[-1][1:] = i,```可以呢? 简单来说 L1=L 与 L1=L[:] - L1和L 都是对同一个对象的引用(所谓绑定的意思)。 - L[:] 是生成了一个和L不同的新的对象,L1 变为了L[:] 这个对象的引用。 参考[stefan](https://leetcode.com/problems/summary-ranges/discuss/63193)