我有一个代表一年中一个月的刺痛列表(未排序,也不连续):
['1/2013', '7/2013', '2/2013', '3/2013', '4/2014', '12/2013', '10/2013', '11/2013', '1/2014', '2/2014']
我正在寻找一种Python式的方法来对它们进行分类,并将每个连续的序列分开,如下所示:
[ ['1/2013', '2/2013', '3/2013', '4/2013'],
['7/2013'],
['10/2013', '11/2013', '12/2013', '1/2014', '2/2014']
]
有什么想法吗?在
groupby的例子很可爱,但过于密集,会在这个输入上中断:
['1/2013', '2/2017']
,也就是说,当有非相邻年份的相邻月份时。在结果:
^{pr2}$如果您只想对列表进行排序,那么就使用sorted函数并传递
key
value=a函数,该函数将日期字符串转换为Python的datetime
对象,请检查下面的代码示例,将列表作为L
:要将“list of month/year strings”拆分为“list of continuous months”,您可以使用以下脚本(read comments),其中,我首先对列表
^{pr2}$L
进行排序,然后根据连续月份对字符串进行分组(为了检查continuous month,我编写了一个函数):其工作原理如下:
拆分代码的代码:
别忘了包括
from datetime import datetime
,这个技巧我相信您可以很容易地更新一个新的日期列表,其中日期是其他格式的。在在@9000提示之后,如果您想检查旧脚本check@codepad,我可以简化排序函数并删除旧答案。在
基于使用^{} 的the example from the docs that shows how to find runs of consecutive numbers:
解决方案的关键是与
enumerate()
生成的范围进行差分,以便连续的月份都出现在同一组中(run)。输出
^{pr2}$相关问题 更多 >
编程相关推荐