Python 如果找到多个值中的任何一个,请删除嵌套列表

Python 如果找到多个值中的任何一个,请删除嵌套列表,python,python-3.x,list-comprehension,nested-lists,Python,Python 3.x,List Comprehension,Nested Lists,我有一个列表,我想删除所有包含多个值的嵌套列表 list_of_lists = [[1,2], [3,4], [5,6]] indices = [i for i,val in enumerate(list_of_lists) if (1,6) in val] print(indices) [0] 我想要一个索引列表,其中的条件是,以便我可以: del list_of_lists[indices] 删除包含特定值的所有嵌套列表。我猜问题在于,当使用1或6工作时,我尝试检查多个值(1,6)。您

我有一个列表,我想删除所有包含多个值的嵌套列表

list_of_lists = [[1,2], [3,4], [5,6]]
indices = [i for i,val in enumerate(list_of_lists) if (1,6) in val]

print(indices)
[0]
我想要一个索引列表,其中的条件是,以便我可以:

del list_of_lists[indices]

删除包含特定值的所有嵌套列表。我猜问题在于,当使用
1
6
工作时,我尝试检查多个值
(1,6)

您可以使用设置操作:

if not {1, 6}.isdisjoint(val)
如果没有任何值出现在其他序列或集合中,则集合是不相交的:

>>> {1, 6}.isdisjoint([1, 2])
False
>>> {1, 6}.isdisjoint([3, 4])
True
或者只测试两个值:

if 1 in val or 6 in val
我不会建立一个索引列表。只需重新构建列表并过滤掉新列表中不需要的任何内容:

list_of_lists[:] = [val for val in list_of_lists if {1, 6}.isdisjoint(val)]
通过分配给
[:]
整个切片,您可以替换
列表中的所有索引,并在适当位置更新列表对象:


有关分配给切片的功能的更多详细信息,请参见。

哇,太好了。我不知道如何分配到切片。如果其他人想了解更多的话-@Bprodz:啊,这确实是一个很好的参考资料。:-)
>>> list_of_lists = [[1, 2], [3, 4], [5, 6]]
>>> another_ref = list_of_lists
>>> list_of_lists[:] = [val for val in list_of_lists if {1, 6}.isdisjoint(val)]
>>> list_of_lists
[[3, 4]]
>>> another_ref
[[3, 4]]