文字列を比較する際に、大文字・小文字を区別したくない場合があります。その時は、比較する文字列を大/小文字列のどちらかに統一しておく、という手があります。Pythonでは大文字・小文字変換メソッドlower()、upper()はstringオブジェクトに組み込まれています。
今回は、その使い方と実際に使用する状況に近いデータ構造、ここでは変換対象文字列がリスト中の要素である場合を想定し、for文とリストコンプリヘンション(リスト内包表記)の両表記を以下に示します。
ソースコード
#!/usr/bin/python # coding: UTF-8 # リスト中の文字列要素を大文字⇔小文字変換 str_atog = "ABCDEFG" str_hton = "hijklmn" # lower(), upper()メソッドの使い方 print "大文字(列) %s を小文字(列) %s に変換" % (str_atog, str_atog.lower()) print "小文字(列) %s を大文字(列) %s に変換" % (str_hton, str_hton.upper()) print arr = [ 'And' , 'Begin' , 'Code' , 'Double' ] arr2 = [ 'end' , 'flag' , 'gem' , 'halt' ] # for文で小文字[大文字](列)を要素とするリストを生成 n_arr = [] for str in arr: n_arr.append( str .lower()) print n_arr n_arr2 = [] for str in arr2: n_arr2.append( str .upper()) print n_arr2, 'n' # リストコンプリヘンションで小文字[大文字](列)を要素とするリストを生成 print [ str .lower() for str in arr] print [ str .upper() for str in arr2] |
実行結果
大文字(列) ABCDEFG を小文字(列) abcdefg に変換 小文字(列) hijklmn を大文字(列) HIJKLMN に変換 ['and', 'begin', 'code', 'double'] ['END', 'FLAG', 'GEM', 'HALT'] ['and', 'begin', 'code', 'double'] ['END', 'FLAG', 'GEM', 'HALT']
List Comprehensions ならワンライナーで書けるってのは地味に良いですね。
話変わりますが、Rubyにもイテレータやブロックを用いた簡略記法がありましたね。アレはアレで、応用しやすいものです。