Python 附加到列表中的多个列表
我有一个空列表,定义如下:Python 附加到列表中的多个列表,python,list,append,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]] 做这件事的蟒蛇式方法是什么?试试这个: lis_A = [[
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]]
做这件事的蟒蛇式方法是什么?试试这个:
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]]
试试这个:
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]]
或者,如果您不想使用无副作用的快速for循环,请使用:
from itertools import izip
for x, y in izip(lis_A, vals):
x.append(y)
或者,如果您不想使用无副作用的快速for循环,请使用:
from itertools import izip
for x, y in izip(lis_A, vals):
x.append(y)
我会使用字典而不是列表:
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
除了
0,1,2
之外,键可能还有一些有意义的值,我会使用字典而不是列表:
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
除了0,1,2
这些值是如何关联的之外,key
可能还有一些有意义的值<代码>某些值0
,某些值1
。它们是不相关的,并且是从其他过程中获得的。这就是你的意思吗?那么请出示密码。你是如何得到这些值的?我是从不同的过程中得到这些值的(读取文件中的值,使用定义的函数进行一些计算等等),代码本身是无关的。所有值都是数字,彼此完全无关。假装它们是随机数?我获取这些值的过程是如何相关的?这些值是如何相关的<代码>某些值0,某些值1
。它们是不相关的,并且是从其他过程中获得的。这就是你的意思吗?那么请出示密码。你是如何得到这些值的?我是从不同的过程中得到这些值的(读取文件中的值,使用定义的函数进行一些计算等等),代码本身是无关的。所有值都是数字,彼此完全无关。假装它们是随机数?我获取这些值的过程是如何相关的?在这种情况下,列表理解不是一个好主意,你在列表上迭代是为了效果而不是值。第三行中创建的None
中间列表就证明了这一点。如果您想避免副作用并使用for循环,最好使用一个简单的for
@scarLópez,您应该使用:for x,y in izip(lis_a,vals):x.append(y)
。它比enumerate版本快50%。列表理解不是一个好主意。在这种情况下,您迭代列表是为了效果,而不是为了值。第三行中创建的None
中间列表就证明了这一点。如果您想避免副作用并使用for循环,最好使用一个简单的for
@scarLópez,您应该使用:for x,y in izip(lis_a,vals):x.append(y)
。它比enumerate
版本快50%。