代码之家  ›  专栏  ›  技术社区  ›  Jake

删除列表中的列表

  •  4
  • Jake  · 技术社区  · 7 年前

    我想删除外部列表中的列表[1,2,3]。 我试过了 or isinstance(item, list) 但这不起作用,嵌套列表仍然存在。

    messy_list = ["a", 2, 3, 1, False, [1, 2, 3]]
    
    # Your code goes below here
    messy_list.pop(3)
    messy_list.insert(0,1)
    
    for item in messy_list:
        if isinstance(item, str) or isinstance(item, bool):
            messy_list.remove(item)
    
    messy_list.pop(-1)
    
    print(messy_list)
    

    我想知道是否有更好的方法来检查列表中是否有列表,然后从外部列表中删除,而不必硬编码。pop(-1)

    2 回复  |  直到 5 年前
        1
  •  4
  •   Patrick Artner    7 年前

    将删除所有内部列表:

    messy_list = ["a", 2, 3, 1, False, [1, 2, 3]] 
    
    cleaned = [item for item in messy_list if not isinstance(item,list)]
    
    print(cleaned)
    

    我使用的列表理解检查所有 item 是你的 messy_list 并且仅当它本身不是列表时才将其添加到生成的新列表中。

        2
  •  0
  •   HK boy user11626805    5 年前

    我们可以像删除单个列表一样删除列表中的列表,只需向del函数提供list对象的引用。

    del(list_object).
    

    例如:-

    a = [1,2,3,[4,5,6]]
    del(a[3])
    

    之后,a将看起来像。

    [1, 2, 3]