【发布时间】:2012-05-02 19:36:46
【问题描述】:
我有一个整数列表...
[1,2,3,4,5,8,9,10,11,200,201,202]
我想将它们分组到一个列表列表中,其中每个子列表都包含序列未被破坏的整数。像这样……
[[1,5],[8,11],[200,202]]
我有一个相当笨重的工作......
lSequenceOfNum = [1,2,3,4,5,8,9,10,11,200,201,202]
lGrouped = []
start = 0
for x in range(0,len(lSequenceOfNum)):
if x != len(lSequenceOfNum)-1:
if(lSequenceOfNum[x+1] - lSequenceOfNum[x]) > 1:
lGrouped.append([lSequenceOfNum[start],lSequenceOfNum[x]])
start = x+1
else:
lGrouped.append([lSequenceOfNum[start],lSequenceOfNum[x]])
print lGrouped
这是我能做的最好的。有没有更“pythonic”的方式来做到这一点?谢谢..
【问题讨论】:
-
考虑跳跃的位置而不是范围的位置。您可以将结果存储在一个简单的整数数组中,其中每个条目都是对应于原始数组中的跳转的索引。我认为这更简单......而且很有可能这将是可重用的或库代码,您可以将所有这些封装在一个类的工作中。
-
我很确定这是重复的,虽然我现在找不到它。
标签: python