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