リスト内包表記スゲー
今さらながら、リスト内包表記のスゴさに触れたので記録しとく。
perlの場合、
@a = (0..9); # 0から9までの数値を要素とした配列 @b = map {$_ * 2} (0..9); @c = map {$_ * 2} @b; @d = grep {$_ % 3 == 0 and $_ % 5 == 0} (0..99); # 0〜99までの 3と5の公倍数 # 重複を許さない要素2個の組 @e = (); for(my $i = 0; $i < @b; $i++){ for(my $j = $i + 1; $j < @b; $j++){ push @e,[$c[$i],$c[$j]] } }
pythonの場合
a = range(0, 10) # 0から9までの数値を要素としたリスト b = map(lambda x: x * 2, xrange(0, 10)) c = [b[x] * 2 for x in xrange(len(b))] # mapをリスト内包表記でも書き直せる d = [x for x in xrange(0, 99) if (x % 3 == 0 and x % 5 == 0)] # 0〜99までの 3と5の公倍数 e = [[c[x], c[y]] for x in xrange(len(c)) for y in xrange(x+1, len(c))] # 重複を許さない要素2個の組
比較してみるとおもしろい。
[参考]