Python按索引从字符串中删除字符的最佳方法

新手上路,请多包涵

我正在像这样从字符串中删除一个字符:

 S = "abcd"
Index=1 #index of string to remove
ListS = list(S)
ListS.pop(Index)
S = "".join(ListS)
print S
#"acd"

我确信这 不是 最好的方法。

编辑 我没有提到我需要操纵长度为 ~ 10^7 的字符串大小。所以关注效率很重要。

有人能帮我吗。哪种 pythonic 方法可以做到这一点?

原文由 Alvaro Silvino 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 808
2 个回答

您可以通过切片绕过所有列表操作:

 S = S[:1] + S[2:]

或更一般地

S = S[:Index] + S[Index + 1:]

您的问题的许多答案(包括这样的)可以在这里找到: How to delete a character from a string using python? .但是,这个问题名义上是关于按值删除,而不是按索引删除。

原文由 Mad Physicist 发布,翻译遵循 CC BY-SA 3.0 许可协议

切片是我能想到的最好和最简单的方法,这里有一些其他的选择:

 >>> s = 'abcd'
>>> def remove(s, indx):
        return ''.join(x for x in s if s.index(x) != indx)

>>> remove(s, 1)
'acd'
>>>
>>>
>>> def remove(s, indx):
        return ''.join(filter(lambda x: s.index(x) != 1, s))

>>> remove(s, 1)
'acd'

请记住,索引是从零开始的。

原文由 Iron Fist 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题