Python序列类型的extend和+的区别

    技术2024-06-30  64

          刚才写一个Python递归函数,遇到了一个问题,就是序列类型的extend方法和+运算符号的区别。

          listA.extend(listB)  和   listA+listB    的效果都是把两个序列类型的元素相加,形成一个新的序列。    extend()的运算效率比+更高。因此我一直都使用extend方法做序列的合并。

          但是, listA.extend(listB) 的返回结果是None,而不是合并后的序列。listA序列是合并后的序列。

          listA+listB返回的是新的序列。

     

          我在写下面这个递归的函数时因为extend方法的这个特点,得到的总是None对象。   改用+后正常。

     

    def getResourceSelfAndParentsDetail(obj):

     

        if(hasattr(obj,"parent")==False or obj.parent==None):

     

            return [obj]

     

     

        else:

            return [obj]+(getResourceSelfAndParentsDetail(obj.parent))

     

    测试代码:

    class Obj(object):

        def __init__(self,val):

            self.val=val

        def __str__(self):

            return str(self.val)

     

        pass

    if __name__ == '__main__':

     

           obj1=Obj(1)

           obj2=Obj(2)

           obj3=Obj(3)

     

           obj2.parent=obj1

           obj3.parent=obj2

           ret=getResourceSelfAndParentsDetail(obj3)

           for obj in ret:

               print str(obj)

    显示正确的

    3

    2

    1

     

    良少 认证博客专家 数据分析 PyTorch 神经网络 资深挨踢人士,精通Python,C,Java,JavaScript,Linux内核,网络协议,虚拟化,云计算,分布式存储,kubernetes,数据仓库等技术。擅长微服务架构设计,DevOps。目前致力于以Fintech助力普惠金融。
    最新回复(0)