Pythonで文の単語を昇順に並べ替えるプログラムの書き方
文章内の単語を昇順(アルファベット順)に並べ替えるには、まず文章を空白文字を区切りとして単語に分割する必要があります。ここでは簡単のため、空白のみで分割し、句読点はそのまま残します。必要に応じて、replaceメソッドや正規表現を使って記号を取り除くことも可能です。
文章を単語に分割したら、国語辞典のように語彙順(レキシコグラフィカル順)で並べ替えます。Pythonでは、元のリスト自体を変更して並べ替えるか、並べ替えた結果を新しいリストとして返すかに応じて、sortメソッドとsorted関数を使い分けます。
その場で並べ替える(in-place)
元のリストや配列の順序を直接変更したい場合、つまり現在の構造自体の順序を入れ替えたいときは、sortメソッドをそのまま使います。
例
sent = "mary has a very beautiful dog"
my_arr = sent.split(" ")
print(my_arr)
my_arr.sort()
print(my_arr)実行結果:
['mary', 'has', 'a', 'very', 'beautiful', 'dog'] ['a', 'beautiful', 'dog', 'has', 'mary', 'very']
ご覧のとおり、元のリストmy_arrが直接変更されています。
sorted関数で新しいリストを作成する
元のリストはそのまま保持し、並べ替えた結果を新しいリストとして作成したい場合は、sorted関数を使用します。
sent = "mary has a very beautiful dog"
# 空白で分割
my_arr = sent.split(" ")
print(my_arr)
# sorted関数で新しいリストを作成
new_arr = sorted(my_arr)
print(new_arr)
# この場合、my_arrはその場で変更されず、
# 並べ替えられた新しいインスタンスがnew_arrに代入される
print(my_arr)出力
['mary', 'has', 'a', 'very', 'beautiful', 'dog'] ['a', 'beautiful', 'dog', 'has', 'mary', 'very'] ['mary', 'has', 'a', 'very', 'beautiful', 'dog']
ご覧のとおり、元のリストは変更されずにそのまま残っています。sortとsortedの違いを理解しておくと、状況に応じて適切な方法を選択できるようになります。
-
Pythonで文中の単語数をカウントする方法|split()とisalpha()を使った2つのアプローチ
本記事では、Pythonを使って文章中の単語数を数えるための解法と、その具体的なアプローチについて詳しく解説します。 問題定義 ある文が与えられたとき、その文に含まれる単語の総数をカウントするプログラムを作成します。 ここでは、以下の2つのアプローチを取り上げます。 アプローチ1: split()関数を使用する方法 アプローチ2: strip()関数とisalpha()関数を組み合わせる方法 アプローチ1:split()関数を使う方法 最もシンプルな方法は、文字列に対してsplit()関数を適用するやり方です。split()はデフォルトで空白文字(スペースやタブなど)を区切りとして文字列を
-
Pythonで単語を辞書式順序に並べ替える方法
辞書式順序(レキシコグラフィカル順)とは単語を辞書式順序で並べ替えるとは、まず単語の1文字目を基準に並べ、1文字目が同じ単語同士はそのグループ内で2文字目を基準に並べ替えるというように、実際の言語の辞書(データ構造の「辞書」ではなく)と同じ規則で整列することを指します。Pythonにはこのような並べ替えを行うための機能として、sort() と sorted() の2つのメソッドが用意されています。それぞれの使い方と、どのような場面でどちらを使うべきかを見ていきましょう。その場でソートする:sort() メソッド元のリスト自体の順序を直接変更してよい場合(インプレースソート)は、sort() メ