Python 把一张单子分成一张真实的单子和一张虚假的单子
我正在学习一门课程,它要求我“创建一个函数,该函数接受一个列表和一个回调函数,该函数返回一个真实值列表和另一个虚假值列表。” 我提交的答复是:Python 把一张单子分成一张真实的单子和一张虚假的单子,python,list,for-loop,if-statement,Python,List,For Loop,If Statement,我正在学习一门课程,它要求我“创建一个函数,该函数接受一个列表和一个回调函数,该函数返回一个真实值列表和另一个虚假值列表。” 我提交的答复是: def partition(lst): truthy_list = [] falsy_list = [] for i in lst: if i in lst == bool(lst): truthy_list.append(i) else: fals
def partition(lst):
truthy_list = []
falsy_list = []
for i in lst:
if i in lst == bool(lst):
truthy_list.append(i)
else:
falsy_list.append(i)
return truthy_list
return falsy_list
讲师给出的答案是:
def partition(lst, **fn**):
trues = []
falses = []
for val in lst:
if **fn(val)**:
trues.append(val)
else:
falses.append(val)
return [trues, falses]
除了函数中定义的“fn”和if语句中的第二部分之外,看起来一切都是一样的。我不知道函数中的第二部分是什么,也不知道if语句调用了什么。如果有人能将我置于他们的庇护之下,并向我解释我对此有何不理解,以及fn(val)在呼吁什么,我们将不胜感激。工作示例
def partition(lst, callback):
trues, falses = [], []
for val in lst:
if callback(val):
trues.append(val)
else:
falses.append(val)
return [trues, falses]
print(partition((
'yes', 'no', 'true', 'false', 'wrong', 'malformed', 0, 'really?', 'True', 'ok'
), callback=lambda x: str(x).lower() in ['true', 'ok', 'yes']))
输出
[['yes', 'true', 'True', 'ok'], ['no', 'false', 'wrong', 'malformed', 0, 'really?']]
这是任务所讨论的回调函数。将函数传递给分区
<代码>分区调用该函数并使用其返回值。