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
最新评论