Python 3 - 将嵌套结果合并到一个列表中



我有一个嵌套循环,它会产生可变行数的列表结构,我想将它们全部合并到一个列表中。问题是,当我尝试附加列表时,它只附加上一个循环的迭代次数,而不是一次附加所有结果行。

这是下面的代码:

PNL = sock.execute(dbname,uid,pwd,'product.template','search',[('product_variant_ids', '=', SOLid)])
for PNLid in PNL:
Pname = sock.execute(dbname,uid,pwd,'product.template','read',PNLid)
Pname = Pname[0]
Pname = Pname['bom_ids']
BoM = sock.execute(dbname,uid,pwd,'mrp.bom.line','search',[('bom_id','=',Pname)])
for BoMs in BoM:
RAWnames = sock.execute(dbname,uid,pwd,'mrp.bom.line','read',BoMs)
RAWnames = RAWnames[0]
LdM = RAWnames['product_id'][1], RAWnames['product_qty'], RAWnames['x_studio_custo_unitrio']
BoM0 = list(LdM)
print(BoM0)

这是生成的列表行。

['Material 1', 1.0, 1.0]
['Material 2', 2.0, 2.0]
['Material 3', 3.0, 3.0]
['Material 2', 2.0, 2.0]
['Material 3', 3.0, 3.0]
['Material 4', 4.0, 4.0]

我需要将它们转换为单个列表。就像下面一样,但我真的不确定如何。

[['Material 1', 1.0, 1.0],
['Material 2', 2.0, 2.0],
['Material 3', 3.0, 3.0],
['Material 2', 2.0, 2.0],
['Material 3', 3.0, 3.0],
['Material 4', 4.0, 4.0]]

因此,例如,如果第一个 for 循环迭代两次,当我追加时,我会得到如下所示的两个列表,但它可以更频繁地循环。

[['Material 1', 1.0, 1.0], ['Material 2', 2.0, 2.0], ['Material 3', 3.0, 3.0]]
[['Material 2', 2.0, 2.0], ['Material 3', 3.0, 3.0], ['Material 4', 4.0, 4.0]]

只需在循环结构之外创建一个"整体容器"。 构造其中一个元素后,将其附加到该列表中。

# make a container for results OUTSIDE of your looping structure
result = []
for i in range(3):
for name in (['bob', 'cindy', 'dave']):
temp = [i, name]
result.append(temp)

print(result)

结果

[[0, 'bob'], [0, 'cindy'], [0, 'dave'], [1, 'bob'], [1, 'cindy'], [1, 'dave'], [2, 'bob'], [2, 'cindy'], [2, 'dave']]

最新更新