我想从列表中删除特定的重复项。使用 Perl,我将使用以下代码完成任务:
my @list = ( 'a1', 'a1', 'b1', 'b1' );
my %seen;
@list = grep( !/a\d/ || !$seen{ $_ }++, @list );
想要的结果是这样的:
@list = ( 'a1', 'b1', 'b1' );
我如何在 Python 3 中使用正则表达式和列表理解来做到这一点。谢谢。
您可以使用itertools.chain https://docs.python.org/2/library/itertools.html#itertools.chain and groupby https://docs.python.org/2/library/itertools.html#itertools.groupby :
>>> list(chain(*[[i[0]] if 'a1' in i else i for i in [list(g) for _,g in groupby(sorted(l))]]))
['a1', 'b1', 'b1']
如果你只是想使用regex
您可以连接 n 使用的元素re.sub
,但请注意,它适用于这种特殊情况!那,
是分隔符! :
>>> l =['a1', 'a1', 'b1', 'b1']
>>> re.sub(r'(a1,)+','a1,',','.join(sorted(l))).split(',')
['a1', 'b1', 'b1']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)