【メモ】【Python】リスト内包表記っぽいgeneratorに関して

generatorは次の形でも表現できる

generatorは大抵defyieldの組み合わせで表現される。 しかし、それ以外にもgeneratorはリスト内包表記的に生み出すこともでき、この方が簡潔な気がした。

import numpy as np

# 2行4列のアレイを作る
arr1 = np.array([[1,2,3,4],[5,6,7,8]])
print("arr1 == \n", arr1)

b = (i ** 2 for j in arr1 for i in j)
print(b.__next__())
print(b.__next__())
print(b.__next__())
print(b.__next__())
print(b.__next__())
print(b.__next__())
print(b.__next__())
print(b.__next__())

結果

arr1 == 
 [[1 2 3 4]
 [5 6 7 8]]
1
4
9
16
25
36
49
64