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'>