python中list 的 += 和 append 等价么?

如下代码中有两处列表添加Interval对象的地方,其中一处用的append,一处用的+=其中用append的地方如果改为+=则报错,很奇怪啊,感觉两处应该都是一致的,有没有哪位大拿可以解释下呢?(当然此处不考虑性能,只考虑正确性)TypeError:'Interval'objectisnotiterable注:有问题的地方是倒数第六行到倒数第三行
#这一行是ok的
intervals.append(Interval(l,r))
#下面这一行会报错TypeError:'Interval'objectisnotiterable
#intervals+=(Interval(l,r))
可以用+=的地方是
out+=i,
#-*-coding:utf-8-*-
"""
Givenacollectionofintervals,mergealloverlappingintervals.
Forexample,
Given[1,3],[2,6],[8,10],[15,18],
return[1,6],[8,10],[15,18].
"""
#Definitionforaninterval.
classInterval(object):
def__init__(self,s=0,e=0):
self.start=s
self.end=e
defmerge(intervals):
"""
:typeintervals:List[Interval]
:rtype:List[Interval]
"""
out=[]
foriinsorted(intervals,key=lambdai:i.start):
#列表最后一个下标为-1
ifoutandi.start<=out[-1].end:
out[-1].end=max(out[-1].end,i.end)
else:
#列表的+=等于append??
out+=i,
returnout
defprint_intervals(intervals):
res=[]
foriinintervals:
res.append('['+str(i.start)+','+str(i.end)+']')
print("".join(res))
if__name__=="__main__":
given=[[1,3],[8,10],[2,6],[15,18]]
intervals=[]
#自动解包
forl,ringiven:
#这一行是ok的
intervals.append(Interval(l,r))
#下面这一行会报错TypeError:'Interval'objectisnotiterable
#intervals+=(Interval(l,r))
print_intervals(intervals)
print_intervals(merge(intervals))
呼如林
浏览 478回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript