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]切片形式,將列表倒序。然後使用相同的方法獲取使判別函數fn為True的元素。
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]