我正在上一门课,它要求我,“创建一个函数,它接受一个列表和一个回调函数,它返回一个真值列表和另一个假值列表。” 我提交的答案是:
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)所呼吁的内容,我将不胜感激。 问题来源StackOverflow 地址:/questions/59387128/separate-a-single-list-into-a-truthy-and-a-falsy-lists
工作示例
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?']]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。