高级用法"/>
python sum高级用法
之前python里面sum的理解不太到位,今天看到了一个碾平list的answer. 看完才明白,sum还可以加数组,加字符串。
碾平list的代码是这样的。
s = [1,[2,[3,4]]]
flat = lambda L: sum(map(flat, L), []) if isinstance(L, list) else [L]
res = flat(s)
print(res)
a = [1,2,[3,4],[[5,6],[7,8, [1,[3,4,[5]]]]]]
flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
print(flatten(a))
普通的递归写法是这样的:
res = []
def fun(s):for i in s:if isinstance(i, list):fun(i)else:res.append(i)
fun(s)
print(res)
这个题并不是sum的重点,重点是最上面的第一种写法。sum(map(flat, L), [])
这段代码是什么意思?
sum(sequence[,start]) sum函数可以带初始值,如果是空列表,就可以进行列表合并,但是,前面的必须得是列表嵌套列表的样式才行。
>>> a = [[1],[2,3],[4,5,6]]
>>> sum(a, [])
[1, 2, 3, 4, 5, 6]
这样的话,就很容易看明白上面的lambda函数是如果实现的了。
参考:
更多推荐
python sum高级用法
发布评论