【发布时间】:2017-04-26 18:35:47
【问题描述】:
假设我有这些列表:
a = ['2009','2010a','2010b','2011','2012a','2012b','2012c','2013a','2014b']
b = ['2008a','2008b']
并且我需要编写一个代码来提供以下列表:
#If I provide list a as the input:
a1 = ['2010a','2010b']
a2 = ['2012a','2012b','2012c']
a3 = ['2013a']
a4 = ['2014b']
#If I provide list b as the input:
b1 = ['2008a','2008b']
目前,我做了以下工作:
- 遍历输入列表中的每一项
- 检查每个项目的最后一个字符串是否为字母
(e.g. a of '2010a') - 检查下一项的最后一个字符串是否也是字母
(e.g. '2010a' and '2010b') - 继续检查直到下一个项目的最后一个字符串不是字母
(e.g. '2010a','2010b','2011'),并收集以前以字母结尾的项目(e.g. '2010a' and '2010b') - 检查收集的项目是否具有相同的数字
(e.g. '2010a' and '2010b', but not '2013a' and '2014b'),并根据需要生成子列表。
上述步骤有效,但很长。我想知道python库中是否有任何代码/技巧可以使代码更短,看起来更干净/更优雅。
【问题讨论】:
-
分离以字母字符结尾的项目后,itertools.groupby 可以按前 4 个字符组织这些项目。
标签: python python-2.7 list python-3.x