gpt4 book ai didi

python - 从列表列表中删除子列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:25 24 4
gpt4 key购买 nike

我正在尝试找到解决这个问题的最快方法,假设我有一个列表列表:

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)]

这会将内部列表转换为集合,将每个集合与其他集合进行比较以查看它是否包含在其中(使用 < 运算符),如果它没有严格包含在另一个集合中,则添加原始列表到新的列表列表。

关于python - 从列表列表中删除子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47209786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com