【Python】for文(for in)とリスト(List)を組み合わせてリスト内包表記でリストを作成!
for文(for in)とリスト(List)を組み合わせることでリスト内包表記としてリストを作成することができます。
リスト内包表記とはすでに定義されているリストなどを使用し、新しいリストなどを短く、簡潔な方法で作成することができます。
今回は、リスト内包表記のリスト作成について解説します。
目次
for文(for in)とは
for文(for in)とは繰り返し処理であり、特定の条件が満たされるまで同じ数のコードを何度も実行する事を言います。
for文の書き方
for文の構文は下記になります
1 2 |
for 変数 in オブジェクト: 実行する処理 |
for文について詳しく知りたい場合は【Python】for文(for in)で繰り返し処理を行う!書き方や使い方を徹底解説!をご参考ください。
リストとは
整数、浮動小数点数、文字列などのデータを格納することができます。
要素には順序があり、インデックスを用いて要素を指定できます。
リストの書き方
リストの構文は下記になります
1 |
変数名= [要素1, 要素2, ...] |
リストについて知りたい場合は【Python】リスト(List)の使い方について分かりやすく解説!サンプルコード付き!をご参考ください。
リスト内包表記とは
先ほども言いましたが、リスト内包表記とはすでに定義されているリストなどを使用し、新しいリストなどを短く、簡潔な方法で作成することができます。
その為、新しいリストを生成するときによく使われます。
リスト内包表記にはif条件が含まれる場合と含まれない場合があります。
また、リスト内包表記に複数のfor(ネストされたリスト内包表記)を含めることもできます。
リスト内包表記の書き方
リスト内包表記の構文は下記になります
1 |
[条件式 for 変数名 in リストなど] |
リストなどの要素を任意の変数名で取り出して、条件式で確認します。
そして、その結果を元に新たなリストが返されるようになります。
リストの内包表記について知りたい場合は【Python】これで完璧!リスト内包表記の使い方を解説!サンプルコード付きをご参考ください。
for文とリスト(List)を組み合わせたリスト内包表記のサンプルコード
if文を使った場合
if文を使うことで、条件分岐のリスト内包表記を作成することができます。
ここで、ifを使ったリスト内包表記のサンプルコードをみてみましょう。
ifの例
1 2 3 4 5 6 7 |
num = [i for i in range(15) if i % 2 == 1] print(num) animal = [i for i in ["ゴリラ", "ライオン", "キリン", "ぞう"] if i == "ライオン"] print(animal) |
出力結果
[1, 3, 5, 7, 9, 11, 13]
[‘ライオン’]
numのリストの要素で2で割り切れない場合に要素としてその数値がリストに作成されます。
また、animalのリストの要素がライオンである場合に、要素としてリ「ライオン」、がリストに作成されます。
if-elseを使ったリスト内包表記のサンプルコードをみてみましょう。
if-elseの例
1 2 3 4 5 6 7 |
num = [ i if i % 2 == 1 else "奇数じゃない" for i in range(15)] print(num) animal = [ i if i == "ライオン" else "他の動物" for i in ["ゴリラ", "ライオン", "キリン", "ぞう"] ] print(animal) |
出力結果
[‘奇数じゃない’, 1, ‘奇数じゃない’, 3, ‘奇数じゃない’, 5, ‘奇数じゃない’, 7, ‘奇数じゃない’, 9, ‘奇数じゃない’, 11, ‘奇数じゃない’, 13, ‘奇数じゃない’]
[‘他の動物’, ‘ライオン’, ‘他の動物’, ‘他の動物’]
numのリストの要素で2で割り切れない場合は数値を、それ以外の場合は「奇数じゃない」と要素としてリストに作成されます。
また、animalのリストの要素がライオンであるなら「ライオン」、それ以外は「他の動物」と要素としてリストに作成されます。
集合演算を使った場合
リスト内包表記の[]を{}に変更することで、集合型のリストが作成されます。
例
1 2 3 4 5 6 7 |
num = {i*2 for i in range(15)} print(num) animal = { i for i in ["ゴリラ", "ライオン", "キリン", "ぞう"] } print(animal) |
出力結果
{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28}
{‘ぞう’, ‘キリン’, ‘ゴリラ’, ‘ライオン’}
それぞれ、集合型のリストが作成されました。
辞書型を使った場合
リスト内包表記の[]を{}に変更することで、辞書型のリストが作成できます。
例
1 2 3 4 |
animal = ["ゴリラ", "ライオン", "ぞう","キリン", "キングコング"] animal1 = {i: len(i) for i in animal} print(animal1) |
出力結果
{‘ゴリラ’: 3, ‘ライオン’: 4, ‘ぞう’: 2, ‘キリン’: 3, ‘キングコング’: 6}
それぞれ、辞書型のリストが作成されました。
range()関数を使った場合
range()関数を使用することで、インデックスのリストを作成することができます。
例
1 2 3 4 5 |
num = [i for i in range(15)] print(num) num1 = [ i*2 if i % 2 == 1 else i*3 for i in range(15)] print(num1) |
出力結果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[0, 2, 6, 6, 12, 10, 18, 14, 24, 18, 30, 22, 36, 26, 42]
それぞれ、インデックスのリストが作成されました。
zip()関数を使った場合
zip()関数を使うことで、複数のリストを一つにまとめたリストが作成されます。
例
1 2 3 4 5 6 7 8 9 10 11 |
animal = ["ゴリラ", "ライオン", "ぞう"] animal1 = ["馬", "ペンギン", "猿"] animal_zip = [(i, j) for i, j in zip(animal, animal1)] print(animal_zip) num = [1, 2, 4] num1 = [5, 7, 8] num_zip = [(i, j) for i, j in zip(num, num1)] print(num_zip) |
出力結果
[(‘ゴリラ’, ‘馬’), (‘ライオン’, ‘ペンギン’), (‘ぞう’, ‘猿’)]
[(1, 5), (2, 7), (4, 8)]
それぞれ、複数のリストが1つのリストになって作成されました。
enumerate()関数を使った場合
enumerate()関数を使用することで、インデックス付きのリストmが作成されます。
例
1 2 3 4 5 6 7 8 9 10 11 |
animal = ["ゴリラ", "ライオン", "ぞう"] animal_zip = [(i, j) for i, j in enumerate(animal)] print(animal_zip) num = [1, 2, 4] num_zip = [(i, j) for i, j in enumerate(num)] print(num_zip) |
出力結果
[(0, ‘ゴリラ’), (1, ‘ライオン’), (2, ‘ぞう’)]
[(0, 1), (1, 2), (2, 4)]
それぞれ、インデックス付きのリストが作成されました。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。