from itertools import groupby
lst = [1, 2, 3, 5, 6, 7, 8, 11, 12, 13, 19] # 连续数字
fun = lambda x: x[1]-x[0]
for k, g in groupby(enumerate(lst), fun):
l1 = [j for i, j in g] # 连续数字的列表
if len(l1) > 1:
scop = str(min(l1)) + '-' + str(max(l1)) # 将连续数字范围用"-"连接
else:
scop = l1[0]
print("连续数字范围:{}".format(scop))
return:
连续数字范围:1-3
连续数字范围:5-8
连续数字范围:11-13
连续数字范围:19
from itertools import groupby
lst=[2,8,11,25,43,6,9,29,51,66]
def gb(num):
if num <= 10:
return 'less'
elif num >=30:
return 'great'
else:
return 'middle'
print [(k,list(g))for k,g in groupby(sorted(lst),key=gb)]
return:
[('less', [2, 6, 8, 9]), ('middle', [11, 25, 29]), ('great', [43, 51, 66])]
https://www.cnblogs.com/dreamer-fish/p/5522687.html