繁体   English   中英

从元组的嵌套列表中删除元组

[英]Remove tuple from nested list of tuples

我有一个嵌套列表作为元组的嵌套列表,如下所示,

nest_list= [[('aa','1'),('bb','2')],[('cc','3'),('bb','4')],[('dd','5'),('dd','6')]]

我需要解析该列表并删除包含值“ bb”的元组,以便最终的嵌套列表如下所示

 final_nest_list= [[('aa','1')],[('cc','3')],[('dd','5'),('dd','6')]]

我尝试使用嵌套的“ for循环”,但似乎效率不高。 在python中是否有任何“递归方式”可以做到这一点,因此即使嵌套列表的深度发生变化,它也应该起作用。

可以很容易地使用列表推导来删除不需要的项目,但是考虑到嵌套的深度可能会有所不同,这是一种递归的方法:

nest_list= [[('aa','1'),('bb','2')],[('cc','3'),('bb','4')],[('dd','5'),('dd','6')]]


def remove_items(lst, item):
    r = []
    for i in lst:
        if isinstance(i, list):
            r.append(remove_items(i, item))
        elif item not in i:
            r.append(i)
    return r

>>> nest_list= [[('aa','1'),('bb','2')],[('cc','3'),('bb','4')],[('dd','5'),('dd','6')]]
>>> remove_items(nest_list, 'bb')
[[('aa', '1')], [('cc', '3')], [('dd', '5'), ('dd', '6')]]

>>> nest_list= [[[('aa','1'),('bb','2')],[('cc','3'),('bb','4')]],[('dd','5'),('dd','6')]]
>>> remove_items(nest_list, 'bb')
[[[('aa', '1')], [('cc', '3')]], [('dd', '5'), ('dd', '6')]]

使功能简单。

def filter_bb(x):
    return [(u,v) for (u,v) in x if u !='bb']

应用于列表理解。

final_nest = [filter_bb(sub_list) for sub_list in nest_list]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM