Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで指定したインデックスの文字を置き換える方法

Pythonでは、文字列 s、インデックス i、置き換えたい文字 c が与えられたときに、s の i 番目の文字を c で置き換えたいという場面があります。

文字列はイミュータブル(変更不可)である点に注意

Pythonにおいて文字列はイミュータブル(immutable)なオブジェクトです。そのため、次のように直接代入しようとするとエラーが発生します。

s[i] = c  # TypeError: 'str' object does not support item assignment

このエラーは「str オブジェクトは要素への代入をサポートしていない」ことを意味します。つまり、リストとは異なり、文字列の一部を後から書き換えることはできません。

解決策:スライスを使って新しい文字列を作る

そこで、元の文字列を分割して結合し、新しい文字列を生成するというアプローチを取ります。手順は以下の通りです。

  • left := 文字列の先頭からインデックス i の直前まで(s[:i]

  • right := インデックス i+1 から末尾まで(s[i+1:]

  • left + c + right を連結して返す

実装例

以下のコードで具体的な動作を確認してみましょう。入力が s = "python"i = 3c = 'P' の場合、出力は "pytPon" になります。

def solve(s, i, c):
   left = s[:i]
   right = s[i+1:]
   return left + c + right

s = "python"
i = 3
c = 'P'
print(solve(s, i, c))

入力

python, 3, 'P'

出力

pytPon

補足:リスト経由で置き換える別の方法

もうひとつの定番テクニックとして、文字列を一度リストに変換してから置き換える方法もあります。

def solve(s, i, c):
    chars = list(s)
    chars[i] = c
    return ''.join(chars)

どちらの方法でも結果は同じですが、スライスを使う方法はコードが短く直感的である一方、リスト経由の方法は複数箇所をまとめて置き換えたい場合に便利です。用途に応じて使い分けるとよいでしょう。

  1. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列

  2. Pythonで文字列からn番目の文字を削除する方法

    この記事では、「文字列から指定したインデックス(i番目)の文字を削除して表示する」という問題の解き方を解説します。 問題の概要 与えられた文字列から、指定されたインデックス位置にある1文字を取り除き、その結果を出力します。 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スクリプトを見ていきましょ