Python 如何从嵌套列表中删除元素?

Python 如何从嵌套列表中删除元素?,python,Python,如果我有一个嵌套列表,例如: m=[[34,345,232],[23,343,342]] 如果我写m.remove(345)它会给出一条错误消息,说元素不在列表中 我想知道如何轻松地从嵌套列表中删除元素???没有快捷方式。必须从容器列表中的每个嵌套列表中删除该值: for L in m: try: L.remove(345) except ValueError: pass 如果您想要类似的行为,如list.remove,请使用以下方法: def

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

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")
请注意,
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来保存嵌套列表的上述级别来解决问题的方法。

如果您有多个嵌套级别,这可能会有所帮助

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]]

您可以使用delete:-
delm[1][1]
或者使用下面的代码

for i in m:
    for j in i:
        if j==345:
            i.remove(j)
print(m)

如果只想通过索引删除,可以使用此方法

m[0].pop(1)
这样,您只能指定索引。
如果您只知道要删除的位置,这将非常有用。

您可以使用此代码删除345

m[0]。删除(345)

执行此操作的快捷方式是使用del命令:

del list[element] element[nested element] 

del [] []

欺骗就在几天前,有人问了完全相同的问题。@SilentGhost:请在您的评论中发布指向该问题的链接。是的,请给出重复问题的链接,我可能会从该问题中得到一些建议。除了使用显式变量
i
,您还可以使用
枚举()
wrapper:
对于i,枚举中的项(节点):
del list[element] element[nested element] 

del [] []