真的佩服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

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

原文地址:https://www.cnblogs.com/jizhong/p/15122552.html