
本篇閱讀的三份代碼的功能分别是判斷清單中的元素是否都符合給定的條件;判斷清單中是否存在符合給定的條件的元素;以及判斷清單中的元素是否都不符合給定的條件。
本篇閱讀的代碼片段來自于30-seconds-of-python。
Python 代碼閱讀合集介紹:為什麼不推薦Python初學者直接看項目源碼
本篇閱讀的三份代碼的功能分别是判斷清單中的元素是否都符合給定的條件;判斷清單中是否存在符合給定的條件的元素;以及判斷清單中的元素是否都不符合給定的條件。
本篇閱讀的代碼片段來自于30-seconds-of-python。
every
every
def every(lst, fn=lambda x: x):
return all(map(fn, lst))
# EXAMPLES
every([4, 2, 3], lambda x: x > 1) # True
every([1, 2, 3]) # True
every
用于判斷清單
lst
中的元素是否都符合給定的判斷條件
fn
。
代碼中首先使用
map
傳回一個疊代器,該疊代器會将判斷條件
fn
應用于所有的清單元素上。然後使用
all
函數判斷疊代器中的元素是否都為
True
。
all(iterable)
接收一個可疊代對象,如果這個對象中的所有元素都為
True
,則函數傳回
True
。注意,當該對象為空時,也傳回
True
。該函數等價于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
some
some
def some(lst, fn=lambda x: x):
return any(map(fn, lst))
# EXAMPLES
some([0, 1, 2, 0], lambda x: x >= 2 ) # True
some([0, 0, 1, 0]) # True
some
用于判斷清單
lst
清單中是否存在符合給定的條件
fn
的元素。
代碼中首先使用
map
傳回一個疊代器,該疊代器會将判斷條件
fn
應用于所有的清單元素上。然後使用
any
函數判斷疊代器中是否至少有一個元素為
True
。
any(iterable)
接收一個可疊代對象,如果這個對象中有任一進制素為
True
,則函數傳回
True
。注意,當該對象為空時,傳回
False
。該函數等價于:
def any(iterable):
for element in iterable:
if element:
return True
return False
none
none
def none(lst, fn=lambda x: x):
return all(not fn(x) for x in lst)
# EXAMPLES
none([0, 1, 2, 0], lambda x: x >= 2 ) # False
none([0, 0, 0]) # True
none
用于判斷清單
lst
中的元素是否都不符合給定的判斷條件
fn
。
代碼中首先使用生成器表達式生成一個生成器,該生成器會将判斷條件
not fn
應用于所有的清單元素上。然後使用
all
函數判斷疊代器中的元素是否都為
True
。
lst = [0, 1, 2, 0]
def fn(x):
return x >= 2
type(not fn(x) for x in lst) # <class 'generator'>