我有一个整数列表,我想生成包含所有连续整数的列表。
我有以下代码可以运行,但似乎不是最佳实践:
#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之间。
itertools
文档中有一个配方,但现在似乎找不到了... - Jon Clements