通常为了将结果存储在 python 中的多个列表中,我在循环之前创建相应的空列表。
A = []
B = []
c = []
D = []
E = []
F = []
for i in range(100):
# do some stuff
我有一种方法可以在单个代码行(或几个)中创建列表吗?
通常为了将结果存储在 python 中的多个列表中,我在循环之前创建相应的空列表。
A = []
B = []
c = []
D = []
E = []
F = []
for i in range(100):
# do some stuff
我有一种方法可以在单个代码行(或几个)中创建列表吗?
如果列表在逻辑上相似(我希望如此,因为一百个不同的变量对程序员来说是暴力的),创建一个列表字典:
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 传递给一个方法。
您可以使用一个对象:
>>> 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
[]
a, b, c, d, e, f = [], [], [], [], [], []
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(...)