有一个由很多点组成的多维列表:all_list = [[[5, 8], [5, 2]], [[5, 9], [5, 1]], [[6, 0]], [[6, 9], [4, 1]], [[5, 2], [5, 8]], [[5, 1]], [[4, 1]], [[5, 8]], [[6, 0]]],每一维度代表一类点。
想要去除其中内容重复的类(此处不考虑顺序,仅考虑包含点相同,如[[5, 8], [5, 2]]与[[5, 2], [5, 8]]视作内容重复,由于点[5,8]在array[0]中已包含,故也视为重复)。
主要运用remove与del两种方法进行操作,del可以直接删除整行列表,remove可以对仅含单个元素的列表进行删除,最后将空列表移出all_list中。代码如下:
# 删除簇中内容重复的列表
k = 0
for i in all_list:
if len(i) == 1:
i.append([])
l = k + 1
for j in all_list[l:]:
if len(j) == 1:
if j[0] in i:
all_list.remove(j)
continue
elif j[0] in i:
if j[1] in i:
del all_list[l]
l += 1
k += 1
# 去除空列表
for i in all_list:
for j in i:
if not j:
i.remove(j)
可以用于处理点集分类问题