web-dev-qa-db-ja.com

Pythonインデックスによって文字列から文字を削除する最良の方法

私はこのような文字列から文字を削除しています:

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

これがnotであると確信しています。

[〜#〜] edit [〜#〜]長さ10 ^ 7の文字列サイズを操作する必要があることは言及しませんでした。そのため、効率に注意することが重要です。

誰かが私を助けることができます。それを行うためのPythonの方法はどれですか?

11
Alvaro Joao

スライシングを使用して、すべてのリスト操作をバイパスできます。

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

またはより一般的に

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

あなたの質問に対する多くの答え(このようなものを含む)はここにあります: pythonを使用して文字列から文字を削除する方法? 。ただし、その質問は名目上、インデックスではなく値による削除に関するものです。

26
Mad Physicist

スライスは、私が考えることができる最良かつ最も簡単なアプローチです。他のいくつかの選択肢があります:

>>> 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'

インデックスはゼロベースであることを忘れないでください。

3
Iron Fist

インデックス文字を「」に置き換えることができます。

str = "ab1cd1ef"
Index = 3
print(str.replace(str[Index],"",1))
0
min2bro