使用列表范围的传递值(子列表)在列表中查找唯一项

时间:2016-10-11 19:43:16

标签: python-2.7 range unique sublist

我试图把两个不同的东西绑在一起。 1.在列表中查找和打印唯一项目。 2.传递一个int值并在前n个项目中打印唯一项目

我有两件事可行,但不能同时将列表拆分为n的子列表:

  

def find_uniques(3):

     
    

lista = ['a','a','b','c','d','c','e','d','e','f','f']

         

list = [lista [x:x + n] for x in xrange(0,len(lista),n)]

         

打印列表

  

[['a','a','b'],['c','d','c'],['e','d','e'],['f' ,'f']]

#2nd part适用于整个列表

  
    

如果lista.count(a)== 1]

,打印[a for a lista   

[ 'B']

#如何让第二部分在子列表上工作,并从每个子列表中返回唯一的字符。

我正在寻找的输出: [['b'],['d'],['d']]

1 个答案:

答案 0 :(得分:0)

通常,拆分这些操作而不是合并更容易,但这里是嵌套列表理解。

lista = ['a', 'a', 'b','c','d','c','e','d','e','f','f']
n = 3
[[ item for item in sublist if sublist.count(item) == 1] for sublist in [ lista[x:x+n] for x in xrange(0, len(lista), n) ] ]

就个人而言,虽然它更长,但我更喜欢这样一个更易阅读的版本:

def findunique(lista,n=3):
    listoflists = [ lista[x:x+n] for x in xrange(0,len(lista),n) ]
    results = []
    for sublist in listoflists:
        unique = [ item for item in sublist if sublist.count(item) == 1]
        if unique:
            results.append(unique)
    return results

lista = ['a','a','b','c','d','c','e','d','e','f','f']    
print findunique(lista,3)