Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看專案原始碼
本篇閱讀的三份代碼的功能分別是判斷串列中的元素是否都符合給定的條件;判斷串列中是否存在符合給定的條件的元素;以及判斷串列中的元素是否都不符合給定的條件,
本篇閱讀的代碼片段來自于30-seconds-of-python,
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
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
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'>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/303711.html
標籤:Python
