Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表列表中删除子列表_Python_List_Set - Fatal编程技术网

Python 从列表列表中删除子列表

Python 从列表列表中删除子列表,python,list,set,Python,List,Set,我试图找到解决这个问题的最快方法,比如我有一个列表: myList = [[1,2,3,4,5],[2,3],[4,5,6,7],[1,2,3],[3,7]] 我希望能够删除作为其他列表之一的子列表的所有列表,例如,我希望以下输出: myList = [[1,2,3,4,5],[4,5,6,7],[3,7]] 其中删除了列表[2,3]和[1,2,3],因为它们完全包含在另一个列表中,而没有删除[3,7],因为没有一个列表包含所有这些元素 我不局限于任何一种数据结构,如果列表列表或集合更容易使

我试图找到解决这个问题的最快方法,比如我有一个列表:

myList = [[1,2,3,4,5],[2,3],[4,5,6,7],[1,2,3],[3,7]]
我希望能够删除作为其他列表之一的子列表的所有列表,例如,我希望以下输出:

myList = [[1,2,3,4,5],[4,5,6,7],[3,7]]
其中删除了列表[2,3]和[1,2,3],因为它们完全包含在另一个列表中,而没有删除[3,7],因为没有一个列表包含所有这些元素

我不局限于任何一种数据结构,如果列表列表或集合更容易使用,那也可以

我能想到的最好的方法是这样的,但它实际上不起作用,因为我试图在迭代列表时从列表中删除它。我试图把它复制到一个新的列表中,但不知怎么的,我没能让它正常工作

for outter in range(0,len(myList)):
outterSet = set(myList[outter])
for inner in range(outter,len(myList)):
    innerSet = set(myList[inner])
    if innerSet.issubset(outterSet):
        myList.remove(innerSet)

谢谢。

解决问题的关键是一系列集合:

lists = [[1,2,3,4,5],[2,3],[4,5,6,7],[1,2,3],[3,7]]

sets = [set(l) for l in lists]

new_list = [l for l,s in zip(lists, sets) if not any(s < other for other in sets)]
list=[[1,2,3,4,5],[2,3],[4,5,6,7],[1,2,3],[3,7]]
集合=[列表中l的集合(l)]
新列表=[l代表l,s在zip(列表,集合)中,如果没有(s<其他代表集合中的其他)]

这会将内部列表转换为集合,将每个集合与其他集合进行比较,以查看是否包含在其中(使用
我很确定您没有列表集。Python不会接受列表作为集合的元素,因为列表是不可散列的。很抱歉,我已经编辑了问题以反映实际情况。我有一个列表。谢谢。这非常有效。我没有完全理解我在b中写的最后一行中发生的事情。)如果它包含在它里面(使用<操作符),我不知道这一点。谢谢!yinnonsanders,我在使用你的代码处理这个列表时遇到了问题:……列表=[[10,20,40],[10,30,30],[10,40,20],[20,10,40],[20,20,30],[20,30,20],[20,40,10],[20,40],[20,20,30]、[20,30,20]、[20,40,10]、[20,10,40]、[20,20,30]、[20,40,10]、[20,30,20]、[20,40,10]、[20,40]、[20,40]、[20,10]、[20,10]、[20,40,10]、[20,40]、[20]、[20,40,10]、[20]、[20,40]、[20]、[20]、[20]、[20,40]、[20]。