【问题标题】:How to get a list with only unique numbers? (Python)如何获取只有唯一数字的列表? (Python)
【发布时间】:2021-11-16 20:49:24
【问题描述】:

我想编写一个程序来检查重复值并删除它们。 所以例如我想从这个:

list = [2,6,8,2,9,8,8,5,2,2]

只得到这个:

uniques = [6,9,5]

我似乎找不到一个好方法来比较每个项目,看看它们是否相等,然后将它们删除。任何帮助将不胜感激!

【问题讨论】:

    标签: python list duplicates unique


    【解决方案1】:

    使用collections.Counter:

    >>> from collections import Counter                                         
    >>> lst = [2,6,8,2,9,8,8,5,2,2]                                             
    >>> c = Counter(lst)                                                        
    >>> [x for x in c if c[x] == 1]                                             
    [6, 9, 5]
    

    除了对每个元素使用 countin 之外,这应该是 O(n) 而不是 O(n²)。

    【讨论】:

      【解决方案2】:

      如果您也想保留元素的顺序,请遵循以下最佳方法:

      uniques = list(dict.fromkeys(list))
      
      print(uniques)
      

      【讨论】:

        【解决方案3】:
        list = [2,6,8,2,9,8,8,5,2,2]
        uniques = []
        for i in range(len(list)):
            if list.count(list[i])==1:
                uniques.append(list[i])
        

        【讨论】:

          【解决方案4】:

          鉴于您想要一个仅在列表中出现一次的值列表,这应该可行。我使用哈希图将值的计数存储在列表中,然后将计数为 1 的键添加到 unqiue

          l = [2,6,8,2,9,8,8,5,2,2]
          unique = []
          count = {}
          
          for i in l:
              if count.get(i) is None:
                  count[i] = 1
              else:
                  count[i]+=1
          
          for i in count.keys():
              if count[i] == 1:
                  unique.append(i)
          
          print(unique)
          

          输出

          [6, 9, 5]
          

          【讨论】:

            【解决方案5】:

            试试这个:

            lst = [2,6,8,2,9,8,8,5,2,2]
            [l for l in set(lst) if lst.count(l) == 1]
            # [5, 6, 9]
            

            【讨论】:

              【解决方案6】:

              list = [2,6,8,2,9,8,8,5,2,2]
              uniques = []
              for i in list:
                  if i not in uniques:
                      uniques.append(i)

              【讨论】:

              • 代码有效,但如果您也添加解释,您的问题会好一些。
              • 代码不起作用。它导致[2, 6, 8, 9, 5] 而OP 要求[6,9,5]。此外,不要将 JavaScript sn-ps 用于 Python 代码。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-10-12
              • 2014-11-20
              • 2021-06-06
              • 1970-01-01
              相关资源
              最近更新 更多