【Python】文字列から奇数インデックスの文字を削除するプログラムの書き方
概要
文字列から奇数インデックス(1、3、5…番目)の文字を削除したい場合は、文字列を引数として受け取る関数を定義するのが基本です。この記事では、whileループを使った実装方法とその動作を、サンプルコードと実行結果をもとにわかりやすく解説します。
サンプルコード
def remove_odd_index_characters(my_str):
new_string = ""
i = 0
while i < len(my_str):
if (i % 2 == 1):
i += 1
continue
new_string += my_str[i]
i += 1
return new_string
if __name__ == '__main__':
my_string = "Hi there Will"
my_string = remove_odd_index_characters(my_string)
print("Characters from odd index have been removed")
print("The remaining characters are : ")
print(my_string)実行結果
Characters from odd index have been removed The remaining characters are : H hr il
コードの解説
まず、
remove_odd_index_charactersという名前の関数を定義し、処理対象の文字列を引数として受け取ります。関数内では、結果を格納するための空の文字列を作成します。
whileループで文字列を先頭から順に走査し、各要素のインデックスを2で割った余りを確認します。
余りが0でない場合、そのインデックスは奇数と判断され、その文字は新しい文字列に追加せずスキップされます。
余りが0の場合(偶数インデックス)、その文字を新しい文字列に連結していきます。
メイン部分では対象となる文字列を定義し、その文字列を引数として関数を呼び出します。
処理結果がコンソールに出力されます。
よりPythonicな方法:スライスを使う
実はPythonでは、スライス記法を使えば同じ処理をたった1行で簡潔に書くことができます。
my_string = "Hi there Will" result = my_string[::2] print(result) # H hr il
my_string[::2] は「先頭から末尾まで、2文字おきに要素を取り出す」という意味になるため、結果的に偶数インデックス(0、2、4…)の文字だけが残ります。コードが短く可読性も高いため、実務ではこちらの書き方が推奨されます。
まとめ
文字列から奇数インデックスの文字を削除するには、①whileループで条件判定しながら文字列を組み立てる方法と、②スライス [::2] を使う方法の2つがあります。仕組みを理解する学習目的では前者、簡潔さが求められる実務では後者を選ぶのがおすすめです。
-
Pythonで辞書から値の大きい上位3件を取得する方法
この記事では、Pythonの辞書(dict)から値が最も大きい上位3件の要素を取り出す方法について解説します。 課題 与えられた辞書から、値の大きい上位3件の「キー : 値」のペアを出力することを目標とします。 これを実現する主なアプローチとして、以下の2つの方法があります。 方法1:collections.Counter() を使う 標準ライブラリの collections モデルにある Counter クラスを利用すると、most_common() メソッドで簡単に上位N件を取得できます。 コード例 # collectionsモジュールをインポート from collections imp
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列