开发者社区> 问答> 正文

将一个列表分成真实列表和虚假列表

我正在上一门课,它要求我,“创建一个函数,它接受一个列表和一个回调函数,它返回一个真值列表和另一个假值列表。” 我提交的答案是:

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

展开
收起
kun坤 2019-12-25 21:42:07 373 0
1 条回答
写回答
取消 提交回答
  • 工作示例

    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?']]
    
    2019-12-25 21:42:14
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
4个迭代,从批量交...1573957773.pdf 立即下载
《用管控策略设定多账号组织全局访问边界》 立即下载
《开放搜索查询分析服务架构分享》 立即下载