附加到列表中的多个列表

时间:2013-08-28 20:41:55

标签: python list append

我有一个空列表空列表,如下所示:

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方式是什么?

3 个答案:

答案 0 :(得分:3)

>>> lis_A = [[], [], []]
>>> vals = [1,2,3]
>>> [x.append(y) for x, y in zip(lis_A, vals)]
>>> lis_A
[[1], [2], [3]]

或者,如果你想要一个没有副作用的快速循环使用:

from itertools import izip

for x, y in izip(lis_A, vals):
    x.append(y)

答案 1 :(得分:2)

试试这个:

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]]

答案 2 :(得分: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之外,{{1}}可能有一些价值。