码迷,mamicode.com
首页 > 编程语言 > 详细

[Python]解决python链式extend的技巧

时间:2016-11-27 19:11:34      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:sel   class   ext   div   编程   添加   解决方法   功能   ret   

  众所周知python中的list是可以extend的,功能 旨在将两个list合并成一个。譬如[1,2,3].extend([4,5,6])=[1,2,3,4,5,6]

  假如有一个list的list,我想把他们reduce成一个list,如何操作?懂点函数式编程的人就会想到用reduce,但是直接reduce(lambda x,y:x.extend(y), lists)是不行的,原因是Python的list类中原始实现不允许链式extend。

  我的解决方法是继承list类添加链式的extend操作。

1 class ListWithLinkExtend(list):
2   def extend(self, value):
3     super(ListWithLinkExtend, self).extend(value)
4     return self

  这样就可以链式extend,对于list的list就很轻松地reduce了。

1 x = [[1,2,3], [4,5,6], [7,8,9]]
2 list(reduce(lambda a, b: ListWithLinkExtend(a).extend(ListWithLinkExtend(b)), x))

 

[Python]解决python链式extend的技巧

标签:sel   class   ext   div   编程   添加   解决方法   功能   ret   

原文地址:http://www.cnblogs.com/kirai/p/6106760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!