0

通常为了将结果存储在 python 中的多个列表中,我在循环之前创建相应的空列表。

A = []
B = []
c = []
D = []
E = []
F = []

for i in range(100):
  # do some stuff

我有一种方法可以在单个代码行(或几个)中创建列表吗?

4

4 回答 4

10

如果列表在逻辑上相似(我希望如此,因为一百个不同的变量对程序员来说是暴力的),创建一个列表字典:

list_names = ['a', 'b', 'c' ]
d = {name:[] for name in list_names}

这将创建一个字典:

d = {'a': [], 'b': [], 'c': []}

您可以在其中访问个人列表:

d['a'].append(...)

或同时处理所有这些:

for v in d.itervalues():
    v.append(...)

与单个列表相比,另一个优点是您可以将整个 dict 传递给一个方法。

于 2012-12-10T11:59:32.407 回答
3

您可以使用一个对象:

>>> from string import ascii_uppercase
>>> class MyLists(object):
    def __init__(self):
        for char in ascii_uppercase:
            setattr(self, char, [])


>>> l = MyLists()
>>> l.A
[]
>>> l.B
[]
于 2012-12-10T11:57:08.743 回答
2
a, b, c, d, e, f = [], [], [], [], [], []
于 2012-12-10T11:57:57.927 回答
2
lists = ([] for _ in range(6))
lists[5].append(...)

或者

A, B, C, D, E, F = ([] for _ in range(6))

或使用 defaultdict

d = defaultdict(list)
d['F'].append(...)
于 2012-12-10T11:59:12.640 回答