【问题标题】:Find unique items in a list using a passed value for range of the list (sublists)使用列表范围(子列表)的传递值查找列表中的唯一项目
【发布时间】:2016-10-11 19:43:15
【问题描述】:

我试图将两个不同的东西联系在一起。 1. 在列表中查找和打印独特的项目。 2.传递一个int值,打印前n项中的唯一项

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

def find_uniques(3):

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

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

打印清单

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

#第二部分适用于整个列表

print [a for a in lista if lista.count(a) == 1]

['b']

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

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

【问题讨论】:

  • 您的格式和问题有点混乱。您能否举例说明您希望获得什么输出?
  • 试图整理格式,处理其他问题。

标签: python-2.7 range unique sublist


【解决方案1】:

通常将这些操作分开而不是合并更容易,但这里有一个嵌套列表推导。

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)

【讨论】:

  • 真的很感谢这个答案,对于像我这样的初学者来说很难阅读,你提到它更容易吐出操作?你会怎么做,制作一些新列表,然后将计数应用于单独的列表?可以举个例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 2017-03-19
  • 2020-08-05
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多