0

通常、結果を Python の複数のリストに格納するために、ループの前に対応する空のリストを作成します。

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

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

単一のコード行 (または少数) でリストを作成する方法はありますか?

4

4 に答える 4

10

リストが論理的に類似している場合 (100 の異なる変数はプログラマーにとって暴力であるため、そうであることを願っています)、リストの辞書を作成します。

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 に答える