2015-10-17 85 views
3

如果列表中有偶數,請返回第一個,如果沒有偶數,則返回-1。 例如像這樣:如何查找列表中的第一個偶數

>>> first_even([5, 8, 3, 2]) 
8 
>>> first_even([7, 1]) 
-1 

我嘗試過的一些功能,這些功能能夠返回即使是第一,但不知道-1。請任何人都可以給我一個建議。

回答

2

您可以使用next()這個 -

def first_even(lst): 
    return next((e for e in lst if e%2==0),-1) 

實例運行 -

>>> def first_even(lst): 
...  return next((e for e in lst if e%2==0),-1) 
... 
>>> first_even([5, 8, 3, 2]) 
8 
>>> first_even([7, 1]) 
-1 
+0

謝謝,我剛剛發現這個問題我問了之後問題:( – Polsop

+0

這個功能的一個嚴重問題是它會處理0甚至!嘗試first_even([int(i)for list in'('038208493759824037493251836')] – SIslam

+0

@SIslam是什麼讓你覺得'0'不是偶數? http://math.stackexchange.com/questions/1113709/is-zero-an-even-number? –

0

您可以使用forelse

>>> def first_even(x): 
    for i in x: 
     if i%2 == 0: 
      return i 
    else: 
     return -1 
>>> first_even([5, 8, 3, 2]) 
8 
>>> first_even([7, 1]) 
-1 
+0

謝謝兄弟!我忘了用其他方式來採取奇怪的狀況。 – Polsop

+0

同樣在這裏,它會認爲0甚至! – SIslam

+0

如果改爲if if> 0和i%2 == 0: –

相關問題