繁体   English   中英

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

[英]Find a unique elements as a list on list

我有一个关于 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 网站

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

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

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

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

如果允许使用包,则可以使用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)))

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

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM