删除列表中的列表

时间:2017-12-10 11:03:43

标签: python list nested pop

我想删除外部列表中的列表[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 个答案:

答案 0 :(得分:2)

将删除所有内部列表:

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,如果它本身不是列表,则只会将其添加到生成的新列表中。

答案 1 :(得分:0)

我们可以像删除单个列表一样删除列表内的列表,只需将列表对象的引用提供给del函数即可。

del(list_object).

例如:-

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

此后,a会看起来像

[1, 2, 3]