这非常丑陋:
psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
有没有办法在一行上声明这些变量?
这非常丑陋:
psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
有没有办法在一行上声明这些变量?
Answers:
alist, blist, clist, dlist, elist = ([] for i in range(5))
上述方法的缺点是,您需要计算左侧的名称数量,=
并且在右侧具有完全相同数量的空列表(例如,通过range
调用或更明确地)。
最主要的是,不要使用类似
alist, blist, clist, dlist, elist = [[]] * 5
也不
alist = blist = clist = dlist = elist = []
这将使所有名称都引用相同的空列表!
alist, blist, clist = []
直到我找到它为止一直失败
根据您的需求,您可以考虑将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")
您可以使用一个类来初始化/存储数据,这将花费更多的行,但可能更易于阅读和面向对象。
喜欢:
class Data:
def __init__(self):
self.var1=[]
<etc.>
def zeroize(self):
self.var1=[]
<etc.>
然后在主要开始附近:
data=Data()
然后在循环中或在主帖子声明中的任何位置都可以使用该类。
data.var1.append(varN)
if(something):
data.zeroize()