是str.replace()还是组合两个切片更好的方法来删除一个字符?

时间:2016-08-29 17:11:38

标签: python

我正在使用CodingBat进行Python语言的练习练习,我接受了“Warmup-1> missing_char”练习。问题是如此:

  

给定一个非空字符串和一个int n,返回一个新的字符串   索引n处的char已被删除。 n的值将是有效索引   原始字符串中的字符串(即n将在该范围内)   0..len(str)-1包含)。

例子是:

  

missing_char('kitten',1)→'ktten'

     

missing_char('kitten',0)→'itten'

     

missing_char('kitten',4)→'kittn'

我写道:

def missing_char(str, n):
  return str.replace(str[n], "") 

它返回所有正确的。正如我通常所做的那样,当我得到正确的答案时,我会看看CodingBat如何回答它。他们用以下方式回答:

def missing_char(str, n):
  front = str[:n]   # up to but not including n
  back = str[n+1:]  # n+1 through end of string
  return front + back

现在,我的问题如下:哪个答案更可行?我的方法有挫折,而CodingBat的方法更稳固吗?或者这只是那种“多种方法”的情况之一?

1 个答案:

答案 0 :(得分:1)

为了发布正式答案,以及之前的评论建议:

str.replace(char,"")将删除角色的所有出现,无论其位置如何。 str[:n]+str[n+1:]只会删除第n个字符。

因此,练习str.replace(char,"") 合适。