问题描述
例如:
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
,
我的方法很简单
- 我检查我们的较长列表中是否已经存在最后一个元素。如果存在,则不需要添加,如果不是,那么我们将添加到较长列表中
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)