2017-08-04 46 views
-2

我的问题是:我有这样的名单:Python如何删除子列表并排重复?

[['x', '2', 'NOT'], [['sw'], ['y', '1', 'P12'], ['sw']], [['sw'], 
['y', '2', 'NOT'], ['sw']], ['x', 'P01'], ['y', 'Xt']] 

我想删除,当他们并排显示的元素复制。 实施例:[ 'SW']],[[ 'SW']

最终的结果应该是:

[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['y', '2', 'NOT'], ['sw'], 
['x', 'P01'], ['y', 'Xt']] 

我已经尝试了很多,但我能做到这一点。

+0

第一步是使您的列表嵌套统一。 [最近的问题](https://stackoverflow.com/questions/45502776/partial-list-flattening-in-python)的答案显示了如何做到这一点。然后你可以搜索相邻的副本。一种方法是使用['groupby'](https://docs.python.org/3/library/itertools.html#itertools.groupby) –

+0

你输入的内容是错误的。这两个元素['sw']] [['sw']属于两个不同的嵌套列表,因此它们不是并排的。你有一个列表中嵌套列表作为元素的大列表。你想要达到什么目的?用独特的元素创建一个大列表? –

+0

@MichailN我的翻译不是抱怨... –

回答

0

要删除重复的元素,

mylist=[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
print (mylist) 

newlist=[] 
for i, e in enumerate(mylist): 
    try: 
     if not (mylist[i-1] == mylist[i] or mylist[i] == mylist[i+1]): 
      newlist.append(e) 
    except IndexError: 
     newlist.append(e) 

print (newlist) 

给人的结果

[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01']] 
+0

Simon is working !!!非常感谢你!!!我有这个问题好几天了。 –

+0

Simon,为什么不打印最后一个元素?我仍然是编程新手,我有点迷路。 –

+0

我更新了代码(这是异常处理),这将会抛出最后一个元素,所以需要将此元素添加到列表中,而不是仅仅继续 –

0

可与列表理解这样做,枚举(获得索引)

mylist=[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
print (mylist) 

newlist=[e for i, e in enumerate(mylist) if mylist[i-1] != mylist[i]] 
print (newlist) 

下面是输出

[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
+0

问题是,当我有重复的元素时,我需要删除这两个。并获得以下内容: [['x','2','NOT'],['sw'],['y','1','P12'],['y','2', 'NOT'],['sw'],['x','P01'],['y', 'Xt']] –