Pythonでリストをつくるときにわざわざデータを一つ一つ入力していくのはメンドウですね。そこで今回はより簡単にリストを作る方法を紹介します。
リストの中に直接for文やif文を書くことで条件付きの値をリストに格納することができます。また、lambda(ラムダ)関数も紹介します。
この記事の内容は以下の記事と重複するところがあります。
Pythonのループ処理に使われるfor文は基本的に複数行でコロン(:)とインデントを使って書かれますが、ときには1行で書くこともできちゃいます。 今回はその一行で書く方法と、複数行で書いた時との違いを紹介していきましょう。この記事[…]
内包表記とは
内包表記とはリストのデータの条件を書き表す方法です。それに対して、リストのデータをすべて書く方法を外延表記と言います。
高校数学Aの集合でやった内容を思いだしましょう。
1 2 3 4 5 |
#内包表記 [ i for i in range(1, 6)] #外延表記 [1, 2, 3, 4, 5] |
for文
for文を書くときは以下のようにインデントしてループするコードを書きますが、内包表記の場合はループするコードを先に書きます。
1 2 3 4 5 6 7 8 9 |
#通常のfor文 for {変数} in {イテラブル}: {ループするコード} #内包表記 [ {ループするコード} for {変数} in {イテラブル}] #イテラブルにはリストやrangeなど |
イテラブル(iterable)は反復可能という性質です。リスト、タプル、range関数などのfor文でループさせることができる物を指します。
以下は内包表記で書いた例です。ループさせるコードに変数を使うとリストに含まれる要素も変化しますが、2つ目のように同じ要素を繰り返すこともできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
>>> [ 2 * x for x in range(5)] #出力結果 [0, 2, 4, 6, 8] >>> ['Hello' for i in range(4)] #出力結果 ['Hello', 'Hello', 'Hello', 'Hello'] >>> [(x, y) for x in range(3) for y in range(2)] #出力結果 [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)] |
for文を2つ書くと多変数も扱うことができるので、複雑なリストも作成することができます。
if文
for文の後にif文を書くことで条件を付けることができます。
1 2 3 4 5 6 7 8 9 |
>>> [(x, y) for x in range(3) for y in range(2) if x != y] #出力結果 [(0, 1), (1, 0), (2, 0), (2, 1)] #if文を先に書くとエラー >>> [(x, y) if x != y for x in range(3) for y in range(2)] SyntaxError: invalid syntax |
上の例はxとyが一致しない数値のときだけリストに格納しています。if文を先に書くとエラーになりますが、elseを使うときは以下のようにif-elseを先に書きます。
1 2 3 4 5 6 7 8 9 |
>>> [(x, y) if x != y else 'same' for x in range(3) for y in range(2)] #出力結果 ['same', (0, 1), (1, 0), 'same', (2, 0), (2, 1)] #if-elseを後に書くとエラー >>> [(x, y) for x in range(3) for y in range(2) if x != y else 'same'] SyntaxError: invalid syntax |
lambda関数
lambda関数は関数の引数と戻り値を簡単に設定できます。
1 |
lambda {引数}: {戻り値}, {範囲} |
これをリストの内包表記に使うときはmap関数とlist関数も使います。
1 2 |
>>> list(map(lambda x: x**2, range(5))) [0, 1, 4, 9, 16] |
これをfor文でも書くと以下のようになります。
1 2 |
>>> [x**2 for x in range(5)] [0, 1, 4, 9, 16] |
まとめ
- 内包表記とは要素の条件を書く
- for文→if文の順
- if-else→for文の順
- lambda関数、map関数、list関数をセットで使う
- コンテナ4種類「リスト・タプル・辞書・セット」とは?
- リストとは?インデックス・要素数・結合する方法を解説
- リストに使えるメソッド11個「追加・削除・ソート」
- for文でリストのインデックスと要素を取り出す(enumerate)
- リストで内包表記する方法「for・if・lambdaの書き方」
- タプルとは?追加・削除・結合・リストに変換する方法
- リスト・タプルをスライスする方法とインデックスの覚え方
- 辞書とは?追加・削除・上書きする方法
- 辞書に使えるメソッド5個(keys・values・items・get・setdefault)
- for文で辞書のキー・バリューを取り出す方法(enumerate・items・keys・values)
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]