如下代码中有两处列表添加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=sself.end=edefmerge(intervals):""":typeintervals:List[Interval]:rtype:List[Interval]"""out=[]foriinsorted(intervals,key=lambdai:i.start):#列表最后一个下标为-1ifoutandi.start<=out[-1].end:out[-1].end=max(out[-1].end,i.end)else:#列表的+=等于append??out+=i,returnoutdefprint_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))
相关分类