真的佩服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强大的表达能力!赞!

posted @ 2021-08-10 10:37  Shapley  阅读(88)  评论(0编辑  收藏  举报