猪猪虾 发表于 2020-5-29 16:40:37

,两个字符串相减,显示超出数组索引


报错显示:
if self == other:
IndexError: list index out of range


#支持字符串的相减操作:A – B,从 A 中去除所有 B 的子字符串。

def Nstr(self,other):
      self = list(self)
      other = list(other)
      for i in range(len(self)):
            for j in range(len(other)):
                if self == other:
                  self.pop(i)
                  print(self)
      me = "".join(self)

a = 'I love FishC.com!iiiiiiii'
b= 'ie'
print(Nstr(a,b))

Stubborn 发表于 2020-5-29 16:43:55

self.pop(i)不要在遍历列表的时候,对列表进行,删,增操作,一定要,请copy一份,保存。

猪猪虾 发表于 2020-5-29 16:48:46

Stubborn 发表于 2020-5-29 16:43
self.pop(i)不要在遍历列表的时候,对列表进行,删,增操作,一定要,请copy一份,保存。

显示self.pop(each)
IndexError: pop index out of range
#支持字符串的相减操作:A – B,从 A 中去除所有 B 的子字符串。

def Nstr(self,other):
      self = list(self)
      other = list(other)
      code = []
      for i in range(len(self)):
            for j in range(len(other)):
                if self == other:
                  code.append(i)
      print(code)         
      for each in code:
            self.pop(each)
            
      me = "".join(self)
      print(me)

a = 'I love FishC.com!iiiiiiii'
b= 'ie'
print(Nstr(a,b))

Twilight6 发表于 2020-5-29 16:54:22

猪猪虾 发表于 2020-5-29 16:48
显示self.pop(each)
IndexError: pop index out of range

def Nstr(self,other):
    temp = ''
    for i in self:
      for j in other:
            if i == j:
                break
      else:
            temp += i
    return temp

a = 'I love FishC.com!iiiiiiii'
b= 'ie'
print(Nstr(a,b))
这样就好,没有必要转为列表

猪猪虾 发表于 2020-5-29 16:54:43

Stubborn 发表于 2020-5-29 16:43
self.pop(i)不要在遍历列表的时候,对列表进行,删,增操作,一定要,请copy一份,保存。

改出来了,感谢
#支持字符串的相减操作:A – B,从 A 中去除所有 B 的子字符串。

def Nstr(self,other):
      self = list(self)
      other = list(other)
      code = []
      for i in range(len(self)):
            for j in range(len(other)):
                if self == other:
                  code.append(i)
      
      code.reverse()
      print(code)
      for each in code:
            self.pop(each)
            
      me = "".join(self)
      print(me)

a = 'I love FishC.com!iiiiiiii'
b= 'ie'
Nstr(a,b)


猪猪虾 发表于 2020-5-29 16:57:07

Twilight6 发表于 2020-5-29 16:54
这样就好,没有必要转为列表

感谢
页: [1]
查看完整版本: ,两个字符串相减,显示超出数组索引