Python - 初始化多个列表/行

the*_*ame 65 python initialization list

这非常难看:

psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
Run Code Online (Sandbox Code Playgroud)

有没有办法在一行上声明这些变量?

Ale*_*lli 151

alist, blist, clist, dlist, elist = ([] for i in range(5))
Run Code Online (Sandbox Code Playgroud)

上述方法的缺点是,您需要计算左侧名称的数量,并在右侧=具有完全相同数量的空列表(例如通过range调用,或更明确地说).

最重要的是,不要使用类似的东西

alist, blist, clist, dlist, elist = [[]] * 5
Run Code Online (Sandbox Code Playgroud)

也不

alist = blist = clist = dlist = elist = []
Run Code Online (Sandbox Code Playgroud)

这将使所有名称引用相同的空列表!

  • 很好的答案,我试图做'alist,blist,clist = []`的C风格并且失败直到我发现这个 (3认同)
  • 是的,它也适用于字典.在我遇到这个问题和答案之前,这就是我一直在寻找的东西. (2认同)

YOU*_*YOU 24

psData,nsData,msData,ckData,mAData,RData,pData = [],[],[],[],[],[],[]
Run Code Online (Sandbox Code Playgroud)


Fra*_*sco 9

根据您的需要,您可以考虑将defaultdict与list factory一起使用.就像是:

my_lists = collections.defaultdict(list)
Run Code Online (Sandbox Code Playgroud)

然后你可以直接附加到my_lists ["psData"]等等.这是相关的文档页面:http://docs.python.org/library/collections.html#collections.defaultdict