[英]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.