Python リストの中に関数を書く

最初に、なんだ?これ… と思ったのが

counts = [self.Nsa[(s,a)] if (s,a) in self.Nsa else 0 for a in range(self.game.getActionSize())]

これ。

これ、リスト内包表記というらしいです。

そういえば、勉強会で聞いたことがあるぞっ!

リストの中で関数を実行して、その結果をリストの中に入れてリストを作成できる、夢のような仕組みです。

もうちょっと簡単な例がいいと思うので、下記の例です。

square = [x ** 2 for x in range(10)]
print(square)

#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] を出力

まず、for文の中で0~10までのカウントがされ、それが一つずつ二乗されてリストに収まります。

慣れればこの方が早い場合があるでしょうが、あんまり複雑なのは私は好きではありませんね!!(´ω`)

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です