過去の日記

2020-08-31 [長年日記]

2010年代SF傑作選2 [novel]

6/10を読んでいた。
「11階」が珠玉すぎた。
「スペース金融道」「トーキョーを食べて育った」は再読してもやっぱり面白い。
2010年代SF傑作選2
https://amzn.to/3b9LxMe

GOSICK VI 仮面舞踏会の夜
https://amzn.to/2YPdp3i

ワークマンは 商品を変えずに売り方を変えただけで なぜ2倍売れたのか
https://amzn.to/3hNB2ki


2020-07-31 [長年日記]

ミーチャ・ベリャーエフの子狐たち [novel]

The Show Must Go On! がすごかった。
"業界用語"とされているのが日本語のことか! と気づいた時の納得感。
ミーチャ・ベリャーエフの子狐たち
https://amzn.to/3fkQJNC


GOSICK IV 愚者を代弁せよ
https://amzn.to/31blAHj

GOSICK V ベルゼブブの頭蓋
https://amzn.to/2XefKE7


2020-06-30 [長年日記]

2030年の旅, 2010年代SF傑作選1 [novel]

瀬名秀明 『144C』 がすごかった
2030年の旅
https://amzn.to/2ZudmcG

既読もあったけど最近読んだばかりの『海の指』以外は読み直した。
仁木稔『ミーチャ・ペリャーエフの子狐たち』がよかった。この人は引き続き読みたい。
神林長平『鮮やかな賭け』、長谷敏司『allo, toi, toi』はやっぱりすごいな。
2010年代SF傑作選1
https://amzn.to/2Zyhw3i

実は読んでいた……
GOSICK 3
https://amzn.to/3goEukd


2020-05-31 [長年日記]

グロリアス・ドーン [novel]

7巻読んだのが2008年10月だったので、11年半ぶりに読み進めた。10年かけてちびちび読んでいた8巻。

グロリアスドーン8 少女は粉雪に踊る
https://amzn.to/2MnMrJc

グロリアスドーン9 ぐるぐる!
https://amzn.to/2AwR1SU

グロリアスドーン10 桜舞い散る空の上、
https://amzn.to/2XRtLae

グロリアスドーン11 幾億の時を越え星を越え、
https://amzn.to/37374Ek

グロリアスドーン12 出逢いの詩は静かに広がる
https://amzn.to/3gN9XNZ


熱い展開。「これってもしや……?」と森さんのファンなら誰でも思うことが中盤でバラされる。
キャサリンはどのように子供を産んだのか?
https://amzn.to/36T064G

NOVAで読んでいるはずのものが多かった。なんとなく覚えているのも忘れているのもあり。楽しい時間だった。
自生の夢
https://amzn.to/2MpDhvY

一般書のようでもあり、学術書でもあり。
賀茂川コミュニケーション塾ービブリオバトルから人工知能まで
https://amzn.to/2MlxHL8

ノルマ的

魔法科高校の劣等生(31) 未来編
https://amzn.to/2Xqp20i

薬屋のひとりごと9
https://amzn.to/2MrqtoJ


2020-05-21 [長年日記]

"forループが遅い"は正しくない [Python]

"forループが遅いからmapで書こう"は正しくない。
forループより「Pythonで書かれた関数(lambda含む)」の呼び出しコストの方が馬鹿にならない。

リストに入った文字列に対して、それぞれ2文字目から2文字分を切り取った文字列でリストを作ることを考える(まだ曖昧だけど本筋じゃないので許して)

seq = [''.join(str(random.randint(0, 9)) for s in range(5)) for _ in range(1_000_000)]

とかして用意しておこう。


result = list(map(lambda x: x[2:4], seq))

より、愚直なforループ

result = []
for x in seq:
    result.append(x[2:4])

の方が速い。

しかし"mapが遅い"という結論にははならない。

愚直なforループより、

result = list(map(itemgetter(slice(2, 4)), seq))

の方が速いから。(itemgetter は operatorモジュールからimportすること)

lambdaとitemgetterとの差から、"mapが遅い"のではなくて、"lamdaの呼び出し/実行が遅い"と考えるのがいいだろう。


とはいえ結局、

result = [x[2:4] for x in seq]

がさらに速いので"内包表記と(関数呼び出しを伴わない)式で書けるならそれでいい"ということで。