• 真的佩服python强大表达力


    场景描述

    有一个对象列表,数据结构如下:

    [[[[56, 21], [261, 22], [261, 46], [56, 45]], '1、 stackoverflow加速', 0.8046855330467224], 
    [[[55, 76], [674, 76], [674, 100], [55, 100]], '2、 stackoverflow除了引用google cdn资源,用户头像等还使用了其它cdn', 0.8062368035316467],
    [[[55, 128], [238, 128], [238, 155], [55, 155]], '3、 codepraject加速', 0.797629177570343],
    [[[54, 181], [675, 182], [675, 207], [54, 206]], '4、 stackoverflow除了引用google cdn资源,用户头像等还使用了其它cdn', 0.7833991050720215]]

    我想取出其中的汉字部分,如果结果是单一类型的,则直接显示:****,如果是列表类型的,则显示格式为:***,***。好了,表演时刻到了:

    第一版:

    result = ''
    for _raw_out in _raw_out_list: result += _raw_out[1] + ','

    输出result,发现这样写有点low,按理说C#语言提供了join函数,那么Python也应该有的,于是搜索一番,发现join只能应用(目前暂时)于纯粹的数字或者字符串列表,对于对象型列表好像不行。于是再次研究,终于发现一种新的写法:

    第二版:

    _out_list = [i[1] for i in _raw_out_list]
    ','.join(_out_list)

    经过验证发现可行,继续研究,既然这个新的列表放在一个变量里面可行,那么省略这个变量声明应该也可行的,于是乎:

    第三版:

    return ','.join([i[1] for i in _raw_out_list])

    继续验证,发现结果也正常!

    第四版:

    使用map函数及lambda表达式

    return ','.join(map(lambda x: x[1], _raw_out_list))

    验证也正常!

    一个常规型写法逐渐演变为一个非常简洁写法,真的佩服Python强大的表达能力!赞!

    文章出处:www.cnblogs.com/jizhong

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。

  • 相关阅读:
    fescar源码解析系列(一)之启动详解
    dubbo源码解析二 invoker链
    dubbo源码解析一
    CSP-S 2021 游记
    使用SpEL记录操作日志的详细信息
    Router 重定向和别名是什么?
    vue项目做seo(prerender-spa-plugin预渲染)
    vue3.0初体验有哪些实用新功能
    uniapp弹窗踩坑
    Spring boot application.properties 配置
  • 原文地址:https://www.cnblogs.com/jizhong/p/15122552.html
Copyright © 2020-2023  润新知