python3中的自定义分组函数itertools.groupby

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容