[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))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM