4
我有一个整数列表,我想生成一个包含所有连续整数列表的列表。python返回列表中的连续整数
#I have:
full_list = [0,1,2,3,10,11,12,59]
#I want:
continuous_integers = [[0,1,2,3], [10,11,12], [59]]
我有工作,但似乎是一个好办法如下做到这一点:
sub_list = []
continuous_list = []
for x in full_list:
if sub_list == []:
sub_list.append(x)
elif x-1 in sub_list:
sub_list.append(x)
else:
continuous_list.append(sub_list)
sub_list = [x]
continuous_list.append(sub_list)
我见过的其他问题表明itertools.groupby是做到这一点的有效途径,但是我对这个函数并不熟悉,而且我似乎在编写lambda函数来描述连续性时遇到了麻烦。
问:有没有更好的方式来这样做(可能与itertools.groupby?)
注意事项:full_list将有整数1和59之间,会一直进行排序,并整数将为0之间59.
通常当我说什么是聪明的,我的意思是它作为一个批评:“聪明”我的意思是“依赖的非明显的特征问题以微妙的方式不健全或通常有用“。然而,这是一个很好的方法。 – DSM 2013-03-07 16:26:39
@DSM它在'itertools'文档中用作配方 - 但似乎无法再找到它了... – 2013-03-07 17:02:33
+1:什么@DSM说。 [这里是文档中连续运行示例的链接](http://docs.python.org/2.6/library/itertools.html#examples) – jfs 2013-03-07 18:51:37