Python 如何将包含元组数据的列表更改为复制元组移除列表
我的清单是这样的Python 如何将包含元组数据的列表更改为复制元组移除列表,python,list,Python,List,我的清单是这样的 list = [('N',''),('N',''),('K','asdf'),('K','asw'),('S','aqq'),('N',''),('N',''),('N','')] 我想把这个名单改成 list_1 = [('N',''),('K','asdf'),('K','asdf'),('S','aqq'),('N','')] 只应删除重复的N 您可以使用itertools.groupby并使用next从每组中抓取第一项 >>> import ite
list = [('N',''),('N',''),('K','asdf'),('K','asw'),('S','aqq'),('N',''),('N',''),('N','')]
我想把这个名单改成
list_1 = [('N',''),('K','asdf'),('K','asdf'),('S','aqq'),('N','')]
只应删除重复的N 您可以使用
itertools.groupby
并使用next
从每组中抓取第一项
>>> import itertools
>>> l = [('N',''),('N',''),('K','asdf'),('K','asw'),('S','aqq'),('N',''),('N',''),('N','')]
>>> [next(group) for key, group in itertools.groupby(l)]
[('N', ''), ('K', 'asdf'), ('K', 'asw'), ('S', 'aqq'), ('N', '')]
编辑:如果您只想删除以
'N'
开头的元组的连续重复项,那么可以使用
>>> [key if key[0] == 'N' else list(itertools.chain.from_iterable(group)) for key, group in itertools.groupby(l)]
[('N', ''), ['K', 'asdf'], ['K', 'asw'], ['S', 'aqq'], ('N', '')]
只需使用set即可删除重复项
>>> old_list
[('N', ''), ('N', ''), ('K', 'asdf'), ('K', 'asw'), ('S', 'aqq'), ('N', ''), ('N', ''), ('N', '')]
>>> list_1 = list((set(old_list)))
>>> list_1
[('K', 'asdf'), ('N', ''), ('K', 'asw'), ('S', 'aqq')]
您可以直接使用
键而不是next(group)
。哦,我只想删除具有“N”元组的元组。如果我使用该代码,当我将('K','asw')更改为('K','asdf)时,那么'K'元组也会更改removed@Arcanes有关该要求的解决方案,请参见我的编辑。set
不会保留顺序!OP只想删除连续的重复项,而不是所有的重复项谢谢你的回答:)@arcanes如果你想要顺序并删除连续的重复项,那么我的答案对你不起作用。。