查找唯一元素作为列表中的列表

时间:2019-08-31 00:01:08

标签: python python-3.x

我有一个有关Udacity的在线课程的Python任务,尽管我为该任务输入了正确的代码,但仍然给我错误的答案。谁能告诉我为什么? 您需要完成功能unique_list(l)。其中“ l”是数字列表。该函数应返回该列表中的唯一编号。

示例:

  

输入:[1,1,1,2,2,3,3,3,3,4,5,5,6]

     

输出:[1,2,3,4,5,6]

no_list=[22,22,2,1,11,11,3,3,3,4,5,5,5,55,55,66]

def unique_list(l):

    l = list(set(no_list))

    l.sort()

    return l

print(unique_list(no_list))

l = list(set(no_list))
l.sort()
return l

这部分是我的答案,另一部分是来自udacity网站

4 个答案:

答案 0 :(得分:1)

您的函数应使用参数l而不是全局变量no_list

def unique_list(l):
    l = list(set(l))
    l.sort()
    return l

答案 1 :(得分:0)

首先,正如@blhsing已经指出的那样,您正在操纵全局变量,而不是传递给函数的变量。尽管如此,我认为您的代码可能还会遇到另一个问题,即您假设传递给函数的所有列表都已排序,其中某些列表可能未排序,但是当您对它们进行排序时,您将丢失原始顺序,而我猜这是一个问题要求,即保持原始列表中元素的顺序,并且要在Python中做到这一点,您可以使用index作为键进行排序:

def unique_list(l):
    return sorted(set(l), key = l.index)

答案 2 :(得分:0)

如果允许使用软件包,则可以使用方便使用的numpy

使用numpy可以完成以下操作:

import numpy as np
def unique_list(l):
  return np.unique(np.array(l))

如果您想返回列表,只需:

import numpy as np
def unique_list(l):
  return list(np.unique(np.array(l)))

答案 3 :(得分:0)

使用这个代码,他们想要一个特定的顺序

no_list = [22,22,2,1,11,11,2,2,3,3,3,4,5,5,5,55,55,66]


def unique_list(l):
    x = []
    for a in l:
        if a not in x:
            x.append(a)
    return x


print(unique_list(no_list))