簡體   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