我有一个整数列表,我想生成一个包含所有连续整数列表的列表。
#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 之间。