1つのクラスによるリストのあるメンバの総和をPythonで1ラインで書く
タイトルが意味不明だ……何て書けばいいんだろう.
例として,整数乱数fuga,yeahをメンバとしてもつクラスHogeを宣言して,Hogeのリストを作り,各Hogeオブジェクトのfugaメンバの総和をとるのを考える.
mathモジュールのsum()を使うけど,sum()はリストの総和を返すので,クラスのリストを渡しても計算できない.
import math class Hoge: def __init__(self,fuga,yeah): self.fuga=fuga#メンバ1つなら配列でいいじゃん,となるのでメンバを2つ定義 self.yeah=yeah hoge=[ Hoge(random.randint(1,100), random.randint(1,100)) for i in range(0, 10, 1) ] #ここまでHogeオブジェクトを10個もつリストの宣言 #fugaとyeahには整数乱数を発生させて渡す #各Hogeオブジェクトのfugaの総和をとる hogefugatotal=sum( hoge[i].fuga for i in range(0, len(hoge), 1))
っていう.
一生懸命書いたはいいけど,これって自明すぎるのか?
まぁ,自分用の備忘録になったからいいか……
2次元リストでいいじゃん
さっきいろいろ頑張ってみたけど,メンバ2つなら2次元リストでいいんじゃね?と思ってきた.
あの1ラインの書き方は何か利用価値あるのか……?
うーん……
ただ単に [hoge for i in range(fuga)]って書き方がしたかっただけなんだけども……