博客 / 詳情

返回

Python代碼閲讀(第46篇):尋找符合條件的元素

Python 代碼閲讀合集介紹:為什麼不推薦Python初學者直接看項目源碼

本篇閲讀的代碼實現了在列表中尋找符合條件的元素。

本篇閲讀的代碼片段來自於30-seconds-of-python。

find

def find(lst, fn):
  return next(x for x in lst if fn(x))

# EXAMPLES
find([1, 2, 3, 4], lambda n: n % 2 == 1) # 1

find函數接收一個列表和一個判別函數,返回第一個使判別函數為真的元素。

函數使用列表推導式和next()來返回lst中第一個 是判別函數fn的返回為True的元素。

next(iterator[, default])獲取迭代器的下一個元素。如果迭代器耗盡,則返回給定的 default,如果沒有默認值則觸發 StopIteration

find_last

類似的,可以實現find_last函數,使用lst[::-1]切片形式,將列表倒序。然後使用相同的方法獲取使判別函數fnTrue的元素。

def find_last(lst, fn):
  return next(x for x in lst[::-1] if fn(x))

# EXAMPLES
find_last([1, 2, 3, 4], lambda n: n % 2 == 1) # 3
>>> lst = [1,2,3,4,5,6]
>>> lst[::-1]
[6, 5, 4, 3, 2, 1]
user avatar hellolvs 頭像 pudongping 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.