我有一个空列表空列表,如下所示:
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方式是什么?
答案 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}}可能有一些价值。