Python – 大文字の個数に基づいてリストを並べ替える方法
Pythonでは、リスト内の文字列を「大文字が含まれる個数」に基づいて並べ替えたいケースがあります。そのような場合、リスト内包表記とisupperメソッドを組み合わせた関数を定義し、それをsortメソッドのキーとして指定することで簡単に実現できます。
以下に具体的な実装例を示します。
サンプルコード
def higher_character_sort(sub):
return len([ele for ele in sub if ele.isupper()])
my_list = ["pyt", "is", "FUN", "to", "Learn"]
print("元のリスト:")
print(my_list)
my_list.sort(key=higher_character_sort)
print("並べ替え後のリスト:")
print(my_list)
実行結果
元のリスト: ['pyt', 'is', 'FUN', 'to', 'Learn'] 並べ替え後のリスト: ['pyt', 'is', 'to', 'Learn', 'FUN']
コードの解説
higher_character_sortという名前の関数を定義し、リストの各要素(文字列)を引数として受け取ります。リスト内包表記を使って文字列内の各文字を走査し、
isupperメソッドでその文字が大文字かどうかを判定します。大文字として判定された文字だけを集めたリストの長さ、つまり大文字の個数を戻り値として返します。
関数の外側では、複数の文字列を含むリスト
my_listを定義し、まず元の状態をコンソールに表示します。sortメソッドを呼び出し、key引数に先ほど定義した関数を指定することで、大文字の個数が少ない順(昇順)にリストが並べ替えられます。最後に、並べ替えられた結果をコンソールに出力して確認します。
なお、Pythonのsortメソッドは安定ソートであるため、大文字の個数が同じ要素同士は元の順序が保持される点にも注目してください。降順に並べ替えたい場合は、my_list.sort(key=higher_character_sort, reverse=True)のようにreverse=Trueを指定するだけで対応できます。
-
Pythonのタプルリストから要素の出現頻度を求める方法
Pythonでは、さまざまな種類のデータコンテナが混在することがよくあります。たとえば、リストの各要素がタプルになっているケースです。本記事では、このような「タプルを要素とするリスト」から、特定の要素が出現する頻度(出現回数)を求める2つの方法を紹介します。 方法1:count() と map() を使う まず、ラムダ式(lambda)を使ってリスト内の各タプルの先頭要素を取り出し、map() 関数でそれらをまとめたうえで、count() を適用して目的の要素の合計出現回数を取得します。 コード例 # タプルのリストを初期化 listA = [(Apple, Mon), (Banana, Tu
-
Pythonで文字列のリストを並べ替える方法:sort()とsorted()の使い分け
Pythonでは、文字列のリストを並べ替える方法が2つ用意されています。リスト自体を直接変更するsort()メソッドと、元のリストを保持したまま新しい並べ替え済みリストを作成するsorted()関数です。それぞれの特徴と使い方を解説します。 sort()メソッドでリストをその場で並べ替える sort()は、リストそのものを並べ替える「in-place(破壊的)」な操作です。元のリストの順序が直接変更されるため、戻り値を受け取る必要はありません。 >>> a = [Hello, My, Followers] >>> a.sort() >>>