Python:优雅并保存编码方式,创建多个列表

时间:2012-12-10 11:53:44

标签: python list optimization coding-style

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

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

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

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

4 个答案:

答案 0 :(得分: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传递给方法。

答案 1 :(得分: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
[]

答案 2 :(得分:2)

a, b, c, d, e, f = [], [], [], [], [], []

答案 3 :(得分: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(...)