これはひどくいです:
psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
これらの変数を1行で宣言する方法はありますか?
alist, blist, clist, dlist, elist = ([] for i in range(5))
上記のアプローチの欠点は、=
の左側にある名前の数を数え、同じ数の空のリストを持つ必要があることです(たとえば、range
呼び出し、またはより明示的に)右側。
主なものは、do n'tのようなものを使用することです
alist, blist, clist, dlist, elist = [[]] * 5
また
alist = blist = clist = dlist = elist = []
すべての名前がsame空のリストを参照するようになります!
psData,nsData,msData,ckData,mAData,RData,pData = [],[],[],[],[],[],[]
ニーズに応じて、リストファクトリでdefaultdictを使用することを検討できます。何かのようなもの:
my_lists = collections.defaultdict(list)
そして、my_lists ["psData"]などに直接追加できます。これは関連するドキュメントページです: http://docs.python.org/library/collections.html#collections.defaultdict
整頓は、パフォーマンスの結果を伴う場合があることに留意してください。範囲関数呼び出しは、初期化プロセスをわずかに遅くします。変数を何度も再初期化する必要があるプロセスがある場合は注意してください。
import time
def r_init():
st=time.time()
alist, blist, clist, dlist, elist = ([] for i in range(5))
et=time.time()
print("{:.15f}".format(et-st))
def p_init():
st=time.time()
alist=[];blist=[];clist=[];dlist=[];elist=[]
et=time.time()
print("{:.15f}".format(et-st))
for x in range(1,10):
r_init()
p_init()
print("\n")