微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Python从长嵌套列表中删除短列表即使项不连续?

如何解决如何使用Python从长嵌套列表中删除短列表即使项不连续?

例如:

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

如果项目包含在一个较长的项目中,即使这些项目不是连续的,我也想删除这些项目。因此,我希望结果是:

[[1,7]]

我可能会自己弄清楚,但是我的方法不够聪明。有人可以在这里帮助我吗?

解决方法

由于列表中的所有元素都是唯一的,所以我喜欢使用集合 这是我的代码。没有检查它的效率,但看起来更干净:D

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

t = [set(l) for l in t]
t = [list(x) for x in t if not any([x.issubset(y) for y in t if x != y])]
,

从小到大排序,设置它们,然后从列表中弹出,以减小每次计算的列表大小。

p+1
,

我的方法很简单

  1. 我检查我们的较长列表中是否已经存在最后一个元素。如果存在,则不需要添加,如果不是,那么我们将添加到较长列表中
sorted_lists=[[1,[1]]

sorted_big_lists =[]
for sorted_list in sorted_lists:
    for test_list in sorted_big_lists:
        if sorted_list[-1] in test_list:
            break
    else:
        sorted_big_lists.append(sorted_list)
  
print(sorted_big_lists)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。