Python学習【365日チャレンジ!】62日目のマスターU(@Udemy11)です。
少し前に、包丁を研ぐことが趣味になっていた時期がありました。
包丁マニア?!で知らないものはいないというメーカーのシャプトンから発売されている【刃の黒幕シリーズ】を使っているのですが、最後の仕上げに#5000のものを使っています。
評価 | 4.5 |
---|
商品の名前を出されても分かる人は少ないと思いますが、鏡面仕上げにできるんですよね。
でもやっぱりさらに目の細かい#8000か#12000で研いでみたいと思うのですが、ちょっと値段が張るので、#5000で我慢しています。
なかなか理解してくれる人がいないんですよね〜。
では、今日もPython学習を始めましょう!
昨日の復習
昨日は、集合内包表記を学習しました。
集合内包表記は、辞書型と同じBracesの波括弧{}を使いました。
s = {i for i in range(10)}
print(s)
出力結果
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
同じBracesの波括弧を使う辞書型の場合、<key
とvalue
をしてするので、この2つを区別することができているということです。
それでは、今日のジェネレーター内包表記にはいっていきましょう!
ジェネレーター内包表記
そろそろ内包表記にも慣れてきたと思いますが、for
ループと同じような働きを持つジェネレーターでも内包表記が可能です。
def g():
for i in range(10):
yield i
g = g()
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
出力結果
0
1
2
3
4
上記コードは、内包表記を使わずに0から9までの数字をジェネレーターに入れて5つ目までの値を出力しています。
ここまで一緒に学習している人ならすでにジェネレーター内包表記を使う場合のコードが思いついているかもしれませんので、その答え合わせをやってみましょう。
g = (i for i in range(10))
print(next(g)
print(next(g)
print(next(g)
print(next(g)
print(next(g)
出力結果
0
1
2
3
4
もしかしたら、最初のi
の前にyield
を入れてしまった人もいるかもしれませんが、私も最初は入れてしまいました。
他の内包表記同様に、変数だけでジェネレーターとして認識されるので、yield
は不要です。
あとは、Pearenthesesの丸括弧を使っているので、タプルになってしまうのでは?と思った人もいるかも知れませんが、内包表記では、Pearenthesesの丸括弧を使うと、ジェネレーターを生成します。
タプルじゃないの?
もし、タプルを生成したい場合は、Pearenthesesの丸括弧の前にtuple
と記述する必要があります。
t = tuple(i for i in range(10))
print(t)
出力結果
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
全ては憶えられなくても
なんどもお伝えしていますが、一度通っただけでは長期記憶には残りません。
学習したら、次の日や1週間後に復習するなど何度も同じ道を通ることで、記憶の片隅に記憶されていきます。
もちろん、Pythonの全てを覚えることは不可能ですので、
そういえば、こんな使い方があったな。
と思い出せるくらいは繰り返して学習する必要があります。
思い出せれば、記憶をたどって情報を引き出すことはできますし、わからなければ、その段階でさらに復習すれば、より記憶に刷り込まれることになります。
一足飛びにマスターできるわけがないので、一つ一つ楽しみながら、学習していきましょう!
それでは、明日もGood Python!