Python - 初始化多个列表/行

106 投票
7 回答
98508 浏览
提问于 2025-04-15 20:10

这个代码看起来真糟糕:

psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []

有没有办法把这些变量在一行里声明呢?

7 个回答

12

根据你的需求,你可以考虑使用一个带有列表工厂的默认字典(defaultdict)。

my_lists = collections.defaultdict(list)

这样你就可以直接往 my_lists["psData"] 里添加内容,依此类推。相关的文档页面在这里: http://docs.python.org/library/collections.html#collections.defaultdict

34
psData,nsData,msData,ckData,mAData,RData,pData = [],[],[],[],[],[],[]

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

236
alist, blist, clist, dlist, elist = ([] for i in range(5))

上面这种方法的缺点是,你需要数一下等号左边有多少个名字,然后在右边也得有完全一样数量的空列表(比如通过 range 函数,或者更明确地写出来)。

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

alist, blist, clist, dlist, elist = [[]] * 5

nor

alist = blist = clist = dlist = elist = []

这样会导致所有名字都指向同一个空列表!

撰写回答