通常为了将结果存储在python中的几个列表中,我在循环之前创建相应的空列表。
A = []
B = []
c = []
D = []
E = []
F = []
for i in range(100):
# do some stuff
我有一种方法可以在一个代码行(或几个)中创建列表吗?
答案 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(...)