2017-10-14 31 views
0

请看看这个程序。Python追加替换现有的列表无

附加函数将该列表替换为无。错误连接下面

class Solution(object): 
    def isIsomorphic(self, a, b): 

     ad = {} 
     bd = {} 
     if len(a) != len(b): 
      return False 
     for i in range(len(a)): 
      if a[i] in ad: 
       ad[a[i]] = ad[a[i]].append(i) 
      else: 
       ad[a[i]] = [i] 

      if b[i] in bd: 
       bd[b[i]] = bd[b[i]].append(i)   
      else: 
       bd[b[i]] = [i] 
     ret = True 
     for j,k in zip(ad.values(), bd.values()): 
      if j != k: 
       return False 
     return ret 


sol = Solution() 
print sol.isIsomorphic("ccc", "aab") 
ERROR
 ad[a[i]] = ad[a[i]].append(i) 

AttributeError: 'NoneType' object has no attribute 'append'  

回答

0

你在这里:你正在分配ad [a [i]]。append [i]到不需要的ad [a [i]]。它是函数调用并返回None。你只需要做广告[A [1]。追加(我)

class Solution(object): 
def isIsomorphic(self, a, b): 

    ad = {} 
    bd = {} 
    if len(a) != len(b): 
     return False 
    for i in range(len(a)): 
     if a[i] in ad: 
      ad[a[i]].append(i) 
     else: 
      ad[a[i]] = [i] 


     if b[i] in bd: 
      bd[b[i]].append(i)   
     else: 
      bd[b[i]] = [i] 
    ret = True 
    for j,k in zip(ad.values(), bd.values()): 
     if j != k: 
      return False 
    return ret 

溶胶=解决方案() 打印sol.isIsomorphic( “CCC”, “AAB”)

1

append值追加到列表中的位置,并返回None。所以ad[a[i]] = ad[a[i]].append(i)意味着你用None代替ad[a[i]]

Here是指出它

您可能已经注意到,像插入方法,删除或那种 只修改列表中已没有返回值,打印文档的一部分 - 他们返回 默认无。 [1]这是Python中所有可变数据结构的设计原则。