Listや辞書の便利な使い方

Listや辞書の便利な使い方

Listの内包表記

PythonにはListの要素を効率よく作成するために、内包表記という方法があります。この内包表記はとても便利なのですが、表記方法が特殊なためここで詳細に解説していきたいと思います。

通常のList作成

まずは通常のListの作成方法を見てみます。

lst = []  
for i in range(10):  
    list.append(i)  
print(lst)

上記コードを実行すると、以下のListの作成されます。

% python list.py  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

内包表記を使ったList作成

内包表記の基本的な書式は以下のように記述します。

[式 for 変数 in イテレート可能なオブジェクト]

「for 変数 in」により、イテレート可能なオブジェクトから要素を取り出し、「式」変数を処理してリストの構成要素を作成していきます。

先ほどと同等のListを内包表記で作成する場合は以下のように記述します。

lst = [i for i in range(10)]  
print(lst)

実行結果は以下の通りです。

% python3.5 list.py  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

見てわかるとおり、内包表記の方が記述がシンプルですし、処理も内包表記の方が高速に処理が行われます。

文字列からリストを作成

内包表記に文字列を指定することで、文字列からリストを作成することも可能です。

% vim list_month.py  
months = [month + "月" for month in "一二三四五六"]  
print (months)

文字列「一二三四五六」から1文字ずつ取り出して、変数monthに格納。「month + “月”」で変数monthと月を連結させて、printで結果を表示させます。

実際の実行結果は以下の通りです。

% python list_month.py  
['一月', '二月', '三月', '四月', '五月', '六月']

if文との組み合わせ

内包表記にif文を組み合わせることも可能です。if文で条件にマッチした要素をリスト化する場合の書式は以下の通りです。

[式 for 変数 in イテレート可能なオブジェクト if 条件式]

10以上20未満の数字のみ取り出す

整数が格納されたリストの中から、「10以上20未満」の数字のみを取り出し、新しくリストを作成してみます。

% vim list.py  
lst = [1,5,60,10,21,13,17,9,20,3,18]  
num = [n for n in lst if n >= 10 and n <= 20]

print (num)

if文を使って10以上20未満の数字を取り出しています。実行結果は以下の通りです。

% python list.py  
[10, 13, 17, 18]

リストを要素とするリストから条件にマッチする要素を取り出す

続いて、身長と性別を要素とするリストから、「女性」を取り出して新しく身長を要素とするリストを作成してみます。

% vim list.py  
lst = [[170,"男性"],[162,"女性"],[155,"女性"],[172,"女性"],[182,"男性"],[164,"男性"]]

woman = [n[0] for n in lst if n[1] == "女性"]  
print (woman)

「n in lst」で変数lstの要素を変数nに格納します。変数nの中の2番目の要素(n[1])である性別が「女性」である場合、1番目の要素(n[0])をリストの要素として取り出します。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: