こんにちわ!このサイトではPythonの初学者のための内容となっております。
前回は、2次元配列について学習しました。
前回の記事
配列について詳しくなった皆様と、今回も配列について学んでいきます!
今回は題名にもある通り、「包括表記」です!
包括表記で記述することで処理速度が速くなることがあります。
処理速度まで考えてコードを記述できるようになると間違いなくレベルが上がります!
それでは頑張っていきましょう!!
プログラミングスクールに関しては下の記事で詳しく記述しています。
こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。
コンテンツ
Let’s practice a little!!
包括表記とは?
包括表記ってすごく難しそうな単語!!
実際初めて見るとわかりづらく感じてしますかもしれないね。
でも、慣れるととても便利だよ!!
包括表記を使うメリット
- データの格納が楽
- コードが見やすい
- 1行で定義できる
このように包括表記を使うメリットはたくさんあり、とても便利なのでこの機会にマスターしましょう!
それでは、コードの記述例を見ていきましょう!
では、いきなりですが、コードの記述例を書いていきます。
基本は配列なのですが、見慣れない形だと思います。
1 2 |
a = [int(i) for i in range(10)] #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
説明を見て慣れればすぐに書けるようになるので安心して下さい!
まずは、いつも通り、変数名を決めて、配列の括弧を記述します。
続いて、括弧の最初に変数を先に書いてあげます。
配列の要素となるのは、「for」文の前のすべて
ととらえるとわかりやすいです!
(私もそのように考えることで理解が深まりました。)
最後に何を繰り返すのかを定義してあげれば完成です。
もう少し練習してみましょう!
包括表記の仮変数の省略
1 2 3 4 5 6 |
from random import randint #ランダムモジュールのインポート a = [randint(0, 100) for _ in range(10)] print(a) #[10, 68, 62, 38, 70, 1, 39, 14, 50, 54] |
「for」の後が 「 _ 」 になってるね!なんで!
「for文」の前で0 ~ 100までのランダムな数字を10個配列に格納する処理を行っていて、今回の場合、変数を定義するが必要ないからだよ!
なるほど!変数を利用する必要がないから省略してるんだね!
今度は2重配列を包括表記で定義してみよう!
1 2 3 4 5 6 |
from random import randint #ランダムモジュールのインポート a = [[randint(0, 100) for _ in range(2)] for _ in range(4)] print(a) #[[96, 71], [31, 92], [62, 56], [27, 77]] |
わからん!
君誰か知らんねんけど。。。
さっきも言った通り、「for文」の前のすべてが配列の要素となります!
解説していきますね!
1 |
[randint(0, 100) for _ in range(2)] |
の部分は、0 ~ 100までのランダムな数値を格納した要素数2の配列を作成します。
その次に、この配列を4個分まとめた結果が先ほどの出力になったわけですね!
理解できましたでしょうか?
簡単や!
包括表記について分かったところで次は処理速度をみていこう!
Let’s practice more!!
複雑な包括表記
包括表記をもう少し詳しく見ていきましょう!
包括表記では、ある条件を満たしている場合にデータに格納するといったこともできます。
そうです!「if文」を用いた条件式を利用します。
では、どのように記述するのか実際に確認してみましょう!
1 2 3 |
a = [int(i) for i in range(10) if i % 2 == 0] print(a) #[0, 2, 4, 6, 8] |
どうでしょうか?今までの内容が理解できていたら直感的にわかりやすいのではないでしょうか?
変数「i」を2で割ったあまりが0ならば配列に値を格納する処理を行っていますね。
この場合後置if文の構造をしていますが次はどうでしょうか!
もっと見てみましょう!
1 2 3 |
a = [str(i) if i % 3 != 0 else "x" for i in range(10)] print(a) #['x', '1', '2', 'x', '4', '5', 'x', '7', '8', 'x'] |
わからん!× 2
少し複雑になりましたね。
でもちゃんと理解できるはずです!
何度も言いますが、「for文」の前が配列に格納されます。
実際にコードを記述しようと思ったらなかなかかけないかもしれませんが、内容的にはそこまで難しくはないです。
変数「i」を3で割ったあまりが0でないならば文字列型の「i」を格納し、そうでないならば”x”を格納するといった感じですね!
例を挙げればきりがないのでこの辺にしますが、慣れると1行で配列を定義できるため、押さえておきたい知識ではあります。
また、Pythonはインタープリタ型の言語で、処理速度はそこまで早くないのですが、この包括表記を用いることで、普通に定義するよりも処理時間が短いというメリットがあります。
Today’s final practice!!
まとめ
今回は、配列と包括表記についての内容でした。
また、包括表記を用いることで処理速度も速いことがわかりました。具体的な処理時間についてはまた別の記事で記述していますのでこちらを参照してください。
本日の理解度調査
今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!
Q. 変数「i」を2で割ったあまりが0の時2倍した値を、それ以外の時は3倍した値を格納した配列を包括表記をもちいて1行で記述せよ。
1 2 3 |
a = [??? for i in range(10)] #ここに入れる式はなにかな? print(a) #[0, 3, 4, 9, 8, 15, 12, 21, 16, 27] |
正解は。。。
1 |
a = [2 * i if i % 2 == 0 else 3 * i for i in range(10)] |
わかったかな??正解出来たら今回の項目は完璧だね!!