假设我有这些列表:如何从列表中提取某些项目?
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库中是否有任何代码/技巧可以使代码更短,看起来更清洁/更优雅。
你写了什么? –
一旦你分离了以_alphabet_字符结尾的项目,[itertools.groupby](https://docs.python.org/3/library/itertools.html#itertools.groupby)就可以组织这些项目的前4个字符。 – wwii
一般来说,你必须在它发生之前尝试做它 –