Python 列表中的重复删除

Python 列表中的重复删除,python,python-2.7,duplicate-removal,duplicate-data,itertools,Python,Python 2.7,Duplicate Removal,Duplicate Data,Itertools,以上是列表数据['stock']列表的输出 我正在考虑删除每个子列表中的重复内容,但找不到方法。如果查看第3行,您会注意到有三个元素0.02、0.02和0.015。但是,前两个元素实际上是重复的,因此其中一个元素是冗余的 是否有一种方法可以检查每个子列表,在保留顺序的同时消除重复值 请告知 看起来子列表已经排序,因此您可以应用: 看起来子列表已排序,因此您可以应用: 使用的解决方案。这将适用于连续和非连续副本,同时保留顺序 In [1]: data = [ ...: [0.074, 0.0

以上是列表数据['stock']列表的输出

我正在考虑删除每个子列表中的重复内容,但找不到方法。如果查看第3行,您会注意到有三个元素0.02、0.02和0.015。但是,前两个元素实际上是重复的,因此其中一个元素是冗余的

是否有一种方法可以检查每个子列表,在保留顺序的同时消除重复值


请告知

看起来子列表已经排序,因此您可以应用:


看起来子列表已排序,因此您可以应用:

使用的解决方案。这将适用于连续和非连续副本,同时保留顺序

In [1]: data = [
   ...: [0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02], 
   ...: [0.02, 0.02, 0.015], 
   ...: [0.026, 0.026, 0.02, 0.02, 0.02, 0.015], 
   ...: [0.021, 0.021, 0.02, 0.017], [0.077, 0.076, 0.074, 0.055, 0.045, 0.021], 
   ...: [0.053, 0.052, 0.051, 0.023, 0.022], 
   ...: [0.016, 0.016]
   ...: ]

In [2]: from itertools import groupby

In [3]: [[k for k, g in groupby(subl)] for subl in data]
Out[3]: 
[[0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02],
 [0.02, 0.015],
 [0.026, 0.02, 0.015],
 [0.021, 0.02, 0.017],
 [0.077, 0.076, 0.074, 0.055, 0.045, 0.021],
 [0.053, 0.052, 0.051, 0.023, 0.022],
 [0.016]]
使用的解决方案。这将适用于连续和非连续副本,同时保留顺序

In [1]: data = [
   ...: [0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02], 
   ...: [0.02, 0.02, 0.015], 
   ...: [0.026, 0.026, 0.02, 0.02, 0.02, 0.015], 
   ...: [0.021, 0.021, 0.02, 0.017], [0.077, 0.076, 0.074, 0.055, 0.045, 0.021], 
   ...: [0.053, 0.052, 0.051, 0.023, 0.022], 
   ...: [0.016, 0.016]
   ...: ]

In [2]: from itertools import groupby

In [3]: [[k for k, g in groupby(subl)] for subl in data]
Out[3]: 
[[0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02],
 [0.02, 0.015],
 [0.026, 0.02, 0.015],
 [0.021, 0.02, 0.017],
 [0.077, 0.076, 0.074, 0.055, 0.045, 0.021],
 [0.053, 0.052, 0.051, 0.023, 0.022],
 [0.016]]
简单答案:

使用列表设置您的列表

Set创建唯一的元素,list将其转换为list

>>> from collections import OrderedDict
>>> some_list = [
[0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02],
[0.02, 0.02, 0.015],
[0.026, 0.026, 0.02, 0.02, 0.02, 0.015],
[0.021, 0.021, 0.02, 0.017], [0.077, 0.076, 0.074, 0.055, 0.045, 0.021],
[0.053, 0.052, 0.051, 0.023, 0.022],
[0.016, 0.016]
]
>>> [OrderedDict.fromkeys(e).keys() for e in some_list]
[[0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02], [0.02, 0.015], [0.026, 0.02, 0.015], [0.021, 0.02, 0.017], [0.077, 0.076, 0.074, 0.055, 0.045, 0.021], [0.053, 0.052, 0.051, 0.023, 0.022], [0.016]]
简单答案:

使用列表设置您的列表

Set创建唯一的元素,list将其转换为list

>>> from collections import OrderedDict
>>> some_list = [
[0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02],
[0.02, 0.02, 0.015],
[0.026, 0.026, 0.02, 0.02, 0.02, 0.015],
[0.021, 0.021, 0.02, 0.017], [0.077, 0.076, 0.074, 0.055, 0.045, 0.021],
[0.053, 0.052, 0.051, 0.023, 0.022],
[0.016, 0.016]
]
>>> [OrderedDict.fromkeys(e).keys() for e in some_list]
[[0.074, 0.073, 0.072, 0.03, 0.029, 0.024, 0.021, 0.02], [0.02, 0.015], [0.026, 0.02, 0.015], [0.021, 0.02, 0.017], [0.077, 0.076, 0.074, 0.055, 0.045, 0.021], [0.053, 0.052, 0.051, 0.023, 0.022], [0.016]]

[k代表k,g在groupbysubl中]应将dup移除添加到itertools.receipes中。但是我不会投这个票,因为我反对回答作者甚至没有试图自己解决问题的问题。@martineau:我真的很抱歉。这是我使用python的第三天了。我会读更多关于这个主题的文章。对此我深表歉意。@martineau好吧,谢谢你没有投反对票:我回答这个问题是因为问题已经很清楚了:提供了可复制的样本输入,并且对期望的结果进行了很好的描述。丁平,这是一个很好的态度:在编程时,文档和搜索引擎是你最好的朋友。我没有否决投票,因为我认为你的答案有可取之处@丁平:对不起,如果我的评论听起来很严厉。在这里,即使是微弱的非工作性尝试也可以——这至少显示了一些主动性,而且这个人不仅仅是懒惰,要求其他人做一些思考,为他们编写一些代码。不幸的是,这里有很多这样的内容……我想知道OP是否曾经提到重复的内容是连续的。如果是非连续重复,此解决方案将不起作用[k代表k,g在groupbysubl中]应将dup删除添加到itertools.receipes。但是我不会投这个票,因为我反对回答作者甚至没有试图自己解决问题的问题。@martineau:我真的很抱歉。这是我使用python的第三天了。我会读更多关于这个主题的文章。对此我深表歉意。@martineau好吧,谢谢你没有投反对票:我回答这个问题是因为问题已经很清楚了:提供了可复制的样本输入,并且对期望的结果进行了很好的描述。丁平,这是一个很好的态度:在编程时,文档和搜索引擎是你最好的朋友。我没有否决投票,因为我认为你的答案有可取之处@丁平:对不起,如果我的评论听起来很严厉。在这里,即使是微弱的非工作性尝试也可以——这至少显示了一些主动性,而且这个人不仅仅是懒惰,要求其他人做一些思考,为他们编写一些代码。不幸的是,这里有很多这样的内容……我想知道OP是否曾经提到重复的内容是连续的。如果存在非连续的重复项,此解决方案将不起作用