2014-03-03 25 views
0

嵌套表說我有一個嵌套列表,例如:的Python - 插入內部列表成爲特定指數

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) 

不工作。任何人都可以提出解決方案

+0

''''將始終綁定到'無',因爲'insert'就地改變了列表並且不返回任何東西。 – roippi

回答

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將按照您的文章描述的方式插入a,並且a的內容將在原地更新。

這是因爲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]] 
+0

是的,這是一個錯字 - 現在修復:) – Holtz

相關問題