【问题标题】:string index not getting updated in a loop字符串索引未在循环中更新
【发布时间】:2021-07-30 00:45:59
【问题描述】:

我正在为空格解析字符串,我发现即使在更新字符串后字符串索引也没有更新,我哪里错了?将非常高兴提供任何指导

class Palindrome:
    
    def __init__(self,seq):
        self.seq=seq.lower()
        
    def remove_space(self):
        print('up',self.seq)
        for num,i in enumerate(self.seq):
            print('start',self.seq)
            if i==' ':
                print('orig',(num,i))
                new_seq=self.seq[:num]+self.seq[num+1:]  
                num=num+1
                self.seq=new_seq # updating the string here
                print('now',self.seq)
                print(num)
        #print(new_seq)        
seq1=Palindrome('superman is here')           
seq1.remove_space() ```

【问题讨论】:

  • 什么不行,能不能分享一下预期的结果
  • 您不应该在循环中更改numself.seq 甚至i 的值。它可能不会产生你所期望的结果。

标签: python string for-loop enumerate


【解决方案1】:

如果你想继续你的方法,你需要考虑你已经从字符串中删除的空格数。而且我还包括了一种在仍然使用循环的同时删除空间的替代方法。

class Palindrome:
    
    def __init__(self,seq):
        self.seq=seq.lower()
        
    def remove_space_alt(self):
        print(self.seq)
        temp_string = ''
        for i, letter in enumerate(self.seq):
            if letter != ' ':
                temp_string += letter
        self.seq = temp_string
        print(self.seq)
        
    def remove_space(self):
        print(self.seq)
        space_count = 0
        for i, letter in enumerate(self.seq):
            if letter == ' ':
                first = self.seq[:i - space_count]
                second = self.seq[i + 1 - space_count:]
                space_count += 1
                self.seq = first + second
                print(self.seq)


print('Showing remove_space')       
seq1=Palindrome('superman is here')
seq1.remove_space()

print('\nShowing remove_space_alt')
seq1=Palindrome('superman is here')
seq1.remove_space_alt()

输出:

Showing remove_space
superman is here
supermanis here
supermanishere

Showing remove_space_alt
superman is here
supermanishere

原帖:建议使用字符串 replace() 删除空格,并没有完全解释更改 for-loop 索引中间循环的问题。

【讨论】:

  • 我同意有更好的方法,只是我需要知道为什么索引没有得到更新
猜你喜欢
  • 2016-10-17
  • 1970-01-01
  • 2013-04-29
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 2022-01-10
  • 2014-10-11
相关资源
最近更新 更多