9.2.5ジェネレーター式
ジェネレーター式とは ジェネレーターを簡易に定義するためのもの
構文 ジェネレーター式
(式 for 仮変数 in シーケンス型)
ジェネレーター式とは ジェネレーターを簡易に定義するためのもの
構文 ジェネレーター式
(式 for 仮変数 in シーケンス型)
>>> import random
>>>
>>> gen = (random.random()for i in range(100))
>>>
>>> for num in gen:
... print(num)
...
0.40605678451352734
0.8280764592174423
0.5215387026946033
0.984922806908842
0.9187387456400804
0.8906723270334326
0.5908191621307722
0.022696640216019248
0.015296166870699013
0.5605462958442438
0.4338851079521976
0.4752944822389973
0.8061495267851049
0.6726974098559592
0.9464559934464233
0.32732004904851075
0.8039541769166315
0.5293069986845623
0.5862936015056035
0.5459604142851463
0.49494951030314494
0.7557838323419284
0.3171906713063607
0.9100713053678555
0.28244613414714814
0.08780477547339671
0.5929720958392513
0.09157706298505774
0.44465134845939247
0.9146895190048424
0.4637283628711365
0.23512855484219453
0.818989547045865
0.5760960972797617
0.89047988018615
0.15237908654264387
0.08535345056508836
0.6969536085963732
0.5909099636237809
0.22838624082938264
0.3317865423891756
0.7024230010887705
0.7766184242229873
0.40828480768629993
0.08948956600813784
0.11751033515183873
0.9846616191899253
0.3264618893997273
0.5316430118897526
0.9941770817830393
0.4578516283972641
0.09255469471984845
0.4607367029982802
0.8478153496457449
0.5528290053398721
0.4907179214910271
0.1503487238334782
0.16490098494649508
0.2585986946386093
0.3256990624536187
0.3896667609892579
0.04771687415818371
0.6243679398407669
0.8394382960091491
0.021704120943076277
0.4397227150678247
0.8900116251927649
0.8641823385883648
0.9223778840513766
0.47653892677277
0.8482814300691428
0.7928834533191407
0.8434155251333043
0.286751701501616
0.8941950038998662
0.5525634070558854
0.2331777244127765
0.34805331204721024
0.6101479399253834
0.6179412949254813
0.5161977661070872
0.6396773580043557
0.6733940946106618
0.2351750344901069
0.8463534529051903
0.5275529128989096
0.9973543748780679
0.6963827019764255
0.020734355505235502
0.8093689200787306
0.47415062485006887
0.04561750754025562
0.01276345322031791
0.2238746492637288
0.40130162634154043
0.293656021297365
0.6992246205912708
0.06890129349356944
0.48846238268138253
0.4126126510944298
>>>
ここでは、Pythonのジェネレータ式とrandom.random関数を用いて、0から1までのランダムな浮動小数点数を100個生成しています。具体的なステップは以下の通りです:
gen = (random.random() for i in range(100)):ここではジェネレータ式を用いています。ジェネレータ式はリスト内包表記に似ていますが、()を使用することで、全ての要素を一度にメモリに格納するのではなく、要素が必要になるたびに生成します。この特性は、大量のデータを扱う際にメモリ効率を上げるのに役立ちます。ここでは、range(100)によって0から99までの整数を生成し、それをiとして取り出します。ただし、このiはrandom.random()の生成には影響を与えないため、結果的には単に100回ランダムな数を生成することになります。for num in gen::このforループでは、上で定義したジェネレータgenから1つずつ要素(ここではランダムな浮動小数点数)を取り出しています。print(num):取り出したランダムな浮動小数点数を表示します。
以上の結果として、0から1までのランダムな浮動小数点数が100個出力されます。
コメント