栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将整数列表转换为逗号分隔范围的字符串的Pythonic方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将整数列表转换为逗号分隔范围的字符串的Pythonic方法

>>> from itertools import count, groupby>>> L=[1, 2, 3, 4, 6, 7, 8, 9, 12, 13, 19, 20, 22, 23, 40, 44]>>> G=(list(x) for _,x in groupby(L, lambda x,c=count(): next(c)-x))>>> print ",".join("-".join(map(str,(g[0],g[-1])[:len(g)])) for g in G)1-4,6-9,12-13,19-20,22-23,40,44

这里的想法是将每个元素与count()配对。然后,对于连续值,该值与count()之间的差是恒定的。groupby()完成其余工作

正如Jeff所建议的那样,

count()
可以使用替代方法
enumerate()
。这增加了一些多余的杂物,需要在print语句中删除

G=(list(x) for _,x in groupby(enumerate(L), lambda (i,x):i-x))print ",".join("-".join(map(str,(g[0][1],g[-1][1])[:len(g)])) for g in G)

更新: 对于此处给出的示例列表,带有枚举的版本比我计算机上使用count()的版本慢大约5%。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596385.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号