1

我有一个空列表的空列表,定义如下:

lis_A = [[], [], []]

在我的代码中的某个时刻,我需要像这样递归地附加值:

lis_A[0].append(some_value0)
lis_A[1].append(some_value1)
lis_A[2].append(some_value2)

所以它看起来像这样:

print lis_A
[[some_value0], [some_value1], [some_value2]]

这样做的pythonic方式是什么?

4

3 回答 3

3

尝试这个:

lis_A = [[], [], []]
to_append = [1, 2, 3]

for i, e in enumerate(to_append):
    lis_A[i].append(e)

lis_A
=> [[1], [2], [3]]

如果有多个元素要附加到每个子列表,只要to_append小心构建列表,这将起作用:

lis_A = [[], [], []]
to_append = [1, 2, 3, 1, 2, 3]

for i, e in enumerate(to_append):
    lis_A[i % len(lis_A)].append(e)

lis_A
=> [[1, 1], [2, 2], [3, 3]]
于 2013-08-28T20:46:40.790 回答
3
>>> lis_A = [[], [], []]
>>> vals = [1,2,3]
>>> [x.append(y) for x, y in zip(lis_A, vals)]
>>> lis_A
[[1], [2], [3]]

或者,如果您不想使用没有副作用的快速 for 循环,请使用:

from itertools import izip

for x, y in izip(lis_A, vals):
    x.append(y)
于 2013-08-28T20:48:12.097 回答
0

我会使用字典而不是列表:

my_lists = {}
for key, some_value in process_result():
    my_list = my_lists.get(key, [])
    my_list.append(some_value)
    my_lists[key] = my_list

key除了0, 1, 2. _

于 2013-08-28T20:50:17.330 回答