,如果我有一個嵌套列表,例如:如何從嵌套列表中刪除元素?
m=[[34,345,232],[23,343,342]]
如果我寫m.remove(345)
它提供了一條錯誤消息,元素不在列表中。
我想知道如何從嵌套列表中刪除一個元素,很容易?
,如果我有一個嵌套列表,例如:如何從嵌套列表中刪除元素?
m=[[34,345,232],[23,343,342]]
如果我寫m.remove(345)
它提供了一條錯誤消息,元素不在列表中。
我想知道如何從嵌套列表中刪除一個元素,很容易?
這沒有捷徑。你必須從每一個嵌套列表容器列表中刪除值:
for L in m:
try:
L.remove(345)
except ValueError:
pass
如果你想要一個像list.remove
類似的操作,使用類似以下內容:
def remove_nested(L, x):
for S in L:
try:
S.remove(x)
except ValueError:
pass
else:
break # Value was found and removed
else:
raise ValueError("remove_nested(L, x): x not in nested list")
In [5]: m=[[34,345,232],[23,343,342]]
In [7]: [[ subelt for subelt in elt if subelt != 345 ] for elt in m]
Out[7]: [[34, 232], [23, 343, 342]]
請注意,只有remove(345)
消除345的第一次出現(如果存在)。上面的代碼刪除所有發生的345.
i=0
for item in nodes:
for itm in item:
m=database_index[itm]
print m
if m[1]=='text0526' or m[1]=='text0194' or m[1]=='phone0526' or m[1]=='phone0194':
nodes[i].remove(itm)
i+=1
這我我是如何解決我的問題,通過使用變量我保存上述級別的嵌套列表。
而不是使用顯式變量'i',你也可以使用'enumerate()'wrapper:'for i,item in enumerate(nodes):' – 2010-06-21 20:44:47
如果你有一個以上的嵌套級別,這可能有助於
def nested_remove(L, x):
if x in L:
L.remove(x)
else:
for element in L:
if type(element) is list:
nested_remove(element, x)
>>> m=[[34,345,232],[23,343,342]]
>>> nested_remove(m, 345)
>>> m
[[34, 232], [23, 343, 342]]
>>> m=[[34,[345,56,78],232],[23,343,342]]
>>> nested_remove(m, 345)
>>> m
[[34, [56, 78], 232], [23, 343, 342]]
欺騙。幾天前問完全相同的問題。 – SilentGhost 2010-06-16 16:44:40
@SilentGhost:請在您的評論中指出該問題的鏈接。 – VoodooChild 2010-06-16 16:47:21
是的請給予重複問題的鏈接,我可能也從中得到一些建議 – kaki 2010-06-16 16:55:44