2015-11-02 134 views
4

我的函數需要獲取整數列表和某個整數,並返回列表中小於特定整數的數字。有什麼建議?Python函數返回的值小於數字列表中的值

def smallerThanN(intList,intN): 
    y=0 
    newlist=[] 
    list1=intList 
    for x in intList: 
     if int(x) < int(intN): 
      print(intN) 
      y+=1 
      newlist.append(x) 
    return newlist 

回答

4

使用一個列表理解與一個 「if」 過濾器以提取在這些值列表小於指定值:

def smaller_than(sequence, value): 
    return [item for item in sequence if item < value] 

我建議給變量更通用的名稱,因爲無論序列項目的類型如何(當然提供的比較對於所討論的類型都是有效的),此代碼將適用於任意序列。

>>> smaller_than([1,2,3,4,5,6,7,8], 5) 
[1, 2, 3, 4] 
>>> smaller_than('abcdefg', 'd') 
['a', 'b', 'c'] 
>>> smaller_than(set([1.34, 33.12, 1.0, 11.72, 10]), 10) 
[1.0, 1.34] 

N.B.已經有了類似的答案,但是,我寧願聲明一個函數,而不是綁定一個lambda表達式。

+0

*已經有了類似的答案*的確如此,但是您已經將它與解釋和風格指南結合起來了。乾杯:)。 –

+0

我同意這比lambda更清晰 – jamylak

+0

我怎樣才能讓逗號不被視爲個人價值? – Helen

-1
def smallerThanN(intList, intN): 
    return [x for x in intList if x < intN] 

>>> smallerThanN([1, 4, 10, 2, 7], 5) 
[1, 4, 2] 
0
integers_list = [4, 6, 1, 99, 45, 76, 12] 

smallerThan = lambda x,y: [i for i in x if i<y] 

print smallerThan(integers_list, 12) 

輸出:

[4,6,1]