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