Python リスト内包表記をもう少し考える |
内包表記で九九のリストを作ってみます。
l = [x*y for x in xrange(1,10) for y in xrange(1,10)]
for i in xrange(9):
print l[i*9:(i*9)+9]
lambdaと組み合わせることも、もちろん可能
func = lambda x,y:x*y
l = [func(x,y) for x in xrange(1,10) for y in xrange(1,10)]
for i in xrange(9):
print l[i*9:(i*9)+9]
リスト内に書くforの数に制限はない模様
l = [x+y+z for x in range(5) for y in range(5) for z in range(5)]
print l
どういう順番に呼び出されるかというと
def func(x,y,z):
print x,y,z
[func(x,y,z) for x in range(5) for y in range(5) for z in range(5)]
#0 0 0
#0 0 1
#0 0 2
#0 0 3
#0 0 4
#0 1 0
#0 1 1
#0 1 2
#0 1 3
#0 1 4
#0 2 0
#...
こう書くのと同じですね。
for x in range(5):
for y in range(5):
for z in range(5):
func(x,y,z)