Pythonで文字列からn番目の文字を削除するプログラムの書き方
はじめに
この記事では、以下の問題に対する解決方法を解説します。
問題文 − 与えられた文字列から、指定したインデックス(i番目)の文字を削除し、その結果を表示します。
Pythonの文字列では、インデックスは必ず0から始まるという点に注意してください。例えば、「Tutorialspoint」という文字列の場合、各文字のインデックスは以下のように対応しています。
T u t o r i a l s p o i n t 0 1 2 3 4 5 6 7 8 9 10 11 12 13
それでは、この問題を解決するためのPythonスクリプトを見ていきましょう。
実装例
def remove(string, i):
# 先頭からi番目の直前までをスライス
a = string[:i]
# i+1番目以降をスライス
b = string[i + 1:]
# 2つの部分を結合して返す
return a + b
# ドライバーコード
if __name__ == '__main__':
string = "Tutorialspoint"
# 削除したいインデックスを指定
i = 8
print(remove(string, i))出力結果
Tutorialpoint
上記の例では、8番目のインデックスにある「s」が削除され、「Tutorialpoint」という文字列が出力されています。
アルゴリズムの解説
入力された文字列から、i番目のインデックスの要素を取り除くのが目的です。そのため、文字列を次の2つの部分に分割します。
- i番目の文字より前の部分(
string[:i]) - i番目の文字より後の部分(
string[i+1:])
こうすることでi番目の文字だけが除外され、分割した2つの文字列を結合(a + b)して返せば、目的の結果が得られます。
なお、Pythonの文字列はイミュータブル(変更不可)であるため、元の文字列を直接書き換えることはできません。この手法では、スライスによって新しい文字列を生成している点もポイントです。
補足:ワンラインで書く方法
同じ処理は、スライスを1行に組み合わせることでより簡潔に記述できます。
def remove(string, i):
return string[:i] + string[i+1:]処理内容は先ほどの例とまったく同じですが、コードが短くなり可読性も向上します。
まとめ
この記事では、Python 3.x(およびそれ以前のバージョン)において、入力文字列から指定したi番目の文字を削除する方法を学びました。文字列のスライスを使えば、特定位置の文字を簡単かつ効率的に除去できることが理解できたと思います。
-
Pythonでn番目のカタラン数を計算するプログラム|再帰法と動的計画法
本記事では、n番目のカタラン数を計算する方法について解説します。 カタラン数(Catalan number)は、次の漸化式で定義される自然数の数列です。 $$C_{0}= 1,\quad C_{n+1}=\displaystyle\sum\limits_{i=0}^n C_{i}C_{n-i}\quad (n \geq 0)$$ n = 0, 1, 2, 3, … に対するカタラン数は、1, 1, 2, 5, 14, 42, 132, 429, … と続きます。 カタラン数は、再帰法と動的計画法のどちらのアプローチでも求めることができます。それでは、それぞれの実装方法を見ていきましょう。 方法
-
Pythonで文字列からn番目の文字を削除する方法【サンプルコード付き】
Pythonにおいて、文字列は文字の配列として扱われます。そのため、先頭の文字のインデックスは「0」から始まり、各文字の位置(インデックス)を簡単に取得できます。この性質を利用すると、指定したn番目の文字だけを削除することが可能です。 基本的な考え方はシンプルです。削除したい文字のインデックス番号を受け取り、元の文字列を次の2つの部分文字列に分割します。 n番目のインデックスの文字より前の部分 n番目のインデックスの文字より後の部分 その後、この2つの部分文字列を連結すれば、n番目の文字が取り除かれた新しい文字列が完成します。 実行例 入力: python 削除するインデックス: 3 出