2017-09-24 85 views
0

該函數必須返回一個列表,其中包含大於函數中第二個數字的數字 它在執行功能時必須能夠執行以下操作:Python 3.X:使用整數列表和值實現returnGreater()函數

returnGreater([1,2,3,4,5], 3) 
[4,5] 

returnGreater([-8,2,-4,1,3,-5],3) 
[] 

這是我有什麼(我已經經歷幾次反覆走了),但我得到一個類型錯誤的嘗試使用int和列表之間的「>」符號:

def returnGreater (x,y): 
    "x:list(int) , return:list(int)" 
    #greater: int 
    greater = [] 
    for y in x: 
     #x: int 
     if x > y: 
      x = greater 
    return greater 
+0

什麼是你的問題?你似乎明白錯誤。 '如果x> y:'如果'x'是一個列表,'沒有意義。 – Carcigenicate

+0

這可以用'filter'來完成。 – Carcigenicate

+0

我必須做到沒有過濾器 – JorSAP

回答

0

您使用的名稱爲y兩種不同nt在你的代碼中的東西。它既是一個參數(要比較的數字)又是循環變量。你應該爲其中的一個使用不同的名稱。

我強烈建議挑選有意義的名稱,因爲這將使每個變量的含義變得更加清晰,並且使得它更不可能在兩個不同的東西中使用相同的名稱。舉例來說,這裏就是我會命名變量(擺脫這兩個xy的):

def returnGreater(list_of_numbers, threshold): 
    greater = [] 
    for item in list_of_numbers: 
     if item > threshold: 
      greater.append(item) 
    return greater 

您曾與線x = greater,這並沒有做什麼有用的另一個問題(它取代了參考原始列表與向空greater列表的引用,你應該append荷蘭國際集團的項目你只是相比greater列表,而不是。

0

我建議filter簡單而優雅的方式。

def returnGreater(x, y): 
    return list(filter(lambda a:a>y, x)) 

表示使用lambda篩選列表中的每個元素ax是否a是否大於y