Python でアルファベットをリストアップする方法
このチュートリアルでは、Python でアルファベットを範囲別にリストアップする方法を紹介します。
このチュートリアルでは、英語のアルファベットの小文字 26 文字を Python のリストに格納したいと思います。この問題を解決する最も手っ取り早い方法は、各文字の ASCII 値を利用することと、Python の既存の関数を利用することです。
Python でアルファベットをリストアップするためにモジュール string
から利用する
Python モジュール string
が用意されており、この問題で使用できるようにあらかじめ定義された定数が含まれています。定数 string.ascii_lowercase
には 26 文字の小文字がすべて含まれています。
print(string.ascii_lowercase)
を実行すると、以下のような出力が得られます。
"abcdefghijklmnopqrstuvwxyz"
したがって、この定数を使って文字のリストに変換して、アルファベットのリストを作成することができます。
import string
def listAlphabet():
return list(string.ascii_lowercase)
print(listAlphabet())
出力:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
アルファベットのリストを大文字にしたい場合は、string.ascii_uppercase
を使って上記のコードを再利用すると、同じ出力が得られますが、大文字の形式で出力されます。
range()
を使って Python でアルファベットのリストを作成する
range()
は一連の数値を出力する関数です。第 1 引数と第 2 引数で関数の開始と終了を指定することができます。
range()
と map()
map()
は 2つの引数を受け付ける関数であり、第 2 引数はイテレート可能かコレクションであり、第 1 引数は第 2 引数を反復処理して処理する関数です。
これら 2つのメソッドを用いて小文字の ASCII 値を用いてアルファベットのリストを生成し、それを関数 chr()
にマッピングします。
def listAlphabet():
return list(map(chr, range(97, 123)))
print(listAlphabet())
range()
を用いて、97 から 122 までの整数をリストアップします。97 は小文字の a
の ASCII 値であり、122 は z
の ASCII 値であるから、map()
と chr()
を用いて ASCII 対応文字から対応する文字への変換を行えば、小文字のアルファベットのリストを出力することができます。
range()
の第 2 引数は排他的であるため 123 であるが、これは停止条件として使用することを意味します。
range()
と ord()
文字を ASCII に変換するので、ord()
は実質的には chr()
の逆です。
range()
の引数に ord()
を用いて小文字のアルファベットのリストを作成します。
def listAlphabet():
return [chr(i) for i in range(ord("a"), ord("z") + 1)]
print(listAlphabet())
range()
の出力をすべてループさせ、chr()
を用いて小文字のアルファベットに変換します。
どちらも同じ出力を生成します。
[
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
]
要約すると、Python で小文字でも大文字でもアルファベットをリストアップする最も簡単な方法は、ASCII の値を扱い、実際の対応するものに変換することができる事前定義されたメソッドを使用することです。string
モジュールの定数を使ってリストに変換することもできますし、range()
を使って ASCII 値を引数にしてアルファベットのリストを生成することもできます。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn