Python - 将内部列表插入到特定索引的嵌套列表中

时间:2014-03-03 17:46:38

标签: python insert nested-lists

假设我有一个嵌套列表,例如:

a = [[4,5,7],[3,5,7],[5,8,0]]

我想将内部列表z=[0,0,0]插入列表a中的特定位置。位置由列表调用索引确定。

所以如果索引列表是:

index = [2,4,5]

结果将z插入位置2,4和5的a。结果列表将是:

a_insert = [[[4,5,7],[3,5,7],[0,0,0],[5,8,0],[0,0,0],[0,0,0]]

                                2               4       5  
                                ^               ^       ^

现在,列表[0,0,0]已插入列表index指定的位置。

天真的尝试是,

for ind in index:
    c = a.insert(ind,z)

哪个不起作用。有人可以提出解决方案吗?

1 个答案:

答案 0 :(得分:1)

您的代码似乎在这里工作得很好。

In [1]: a = [[4,5,7],[3,5,7],[5,8,0]]
In [2]: z = [0,0,0]
In [3]: index = [2,4,5]
In [4]: for ind in index:
   ...:     a.insert(ind, z)
In [5]: a
Out[5]: [[4, 5, 7], [3, 5, 7], [0, 0, 0], [5, 8, 0], [0, 0, 0], [0, 0, 0]]

我注意到您的最后一行尝试插入列表b。这可能是一个错字,因为您之前提到了a列表吗?

修改

您在原始帖子中的更新代码段现在是:

for ind in index:
    c = a.insert(ind,z)
在此类操作之后,

c始终为None。但是,z会按照帖子描述的方式插入aa的内容将会就地更新。

这是因为insert直接修改了给定的列表,并且没有返回任何值(None除外)。

也许您希望保留原始列表a,并创建一个新列表c,并插入值?在这种情况下,一个简单的解决方案如下:

c = a[:] # Create a shallow copy of a
for ind in index:
    c.insert(ind, z)

# a is now [[4, 5, 7], [3, 5, 7], [5, 8, 0]]
# c is now [[4, 5, 7], [3, 5, 7], [0, 0, 0], [5, 8, 0], [0, 0, 0], [0, 0, 0]]