Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将包含元组数据的列表更改为复制元组移除列表_Python_List - Fatal编程技术网

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如果你想要顺序并删除连续的重复项,那么我的答案对你不起作用。。