【发布时间】:2014-08-02 00:14:26
【问题描述】:
下面是 3D 点组的元组
f = [[10, 20, 0],
[40, 20, 30],
[20, 0, 30],
[10, 10, 0],
[30, 10, 10],
[20, 0, 30],
[20, 10, 20],
[10, 10, 0]]
每个点对应一个特定的数字(索引),表示点的类型(假设)
ic=[1,2,3,2,1,3,2,3,1]
因此,前一个元组可以表示为
f = [[10, 20, 0, 1],
[40, 20, 30, 2],
[20, 0, 30, 3],
[10, 10, 0, 2],
[30, 10, 10, 1],
[20, 0, 30, 3],
[20, 10, 20, 2],
[10, 10, 0, 3],
[20, 0, 30, 1]]
这是我的代码:
def selectUnique(x):
count = Counter((i[0], i[1], i[2]) for i in x)
out = [i for i in x if count[(i[0], i[1], i[2])] == 1]
return out
selectUnique(f)
我想要得到的结果如下图:
独特的部分:
index point equivalent points index
0 [10, 20, 0, 1] 1 [1]
1 [40, 20, 30, 2] 1 [2]
2 [20, 0, 30, 3] 3 [3,3,1]
3 [10, 10, 0, 2] 2 [2,3]
4 [30, 10, 10, 1] 1 [1]
6 [20, 10, 20, 2] 1 [2]
重复部分:
index point Duplicate or not
5 [20, 0, 30, 3] duplicate
7 [10, 10, 0, 3] duplicate
8 [20, 0, 30, 1] duplicate
我的代码是为了实现将重复点挑出并在列表中指示其索引的功能。此外,我还需要实现显示我的独特部分中有多少等效点以及这些等效点的索引的功能。
但是,我的代码不起作用,我该如何修改它?
【问题讨论】:
-
具体做错了什么?
-
我需要做的是计算点,当点中的三个值都等于前一个时,它会发生重复。
-
'我的代码不起作用' - 它会产生什么错误,如果有的话?我试过了,一切正常,你得到了你想要的正确结果。
-
set([tuple(i) for i in f])能解决您的问题吗?
标签: python for-loop duplicates tuples