zoukankan      html  css  js  c++  java
  • [Python]解决python链式extend的技巧

      众所周知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))
  • 相关阅读:
    第二章例2-11
    第二章例2-10
    例2-11
    例2-9+2-10
    例2-7+例2-8
    例2-5+2-6
    例2-4
    例2-3
    例2-2
    例2-1
  • 原文地址:https://www.cnblogs.com/kirai/p/6106760.html
Copyright © 2011-2022 走看看