我正在用Python编程。我有一个变量node
,它带有以下值:
node = (87.0921419983132, 106.6283716496173)
(86.77840486780269, 97.63384170009026)
(78.16407779475766, 95.02743246925114)
(70.02882757413327, 91.17805539655082)
(61.50050332176587, 88.30269708036101)
(54.98537952281276, 82.09357782846105)
(46.833207518576465, 78.2801683810838)
(37.86736484348003, 77.49680057129092)
(29.816754354836903, 73.47341011545032)
(20.822013250759838, 73.78103402646268)
(87.0921419983132, 106.6283716496173)
(86.77840486780269, 97.63384170009026)
(78.16407779475766, 95.02743246925114)
(70.02882757413327, 91.17805539655082)
(61.50050332176587, 88.30269708036101)
(54.98537952281276, 82.09357782846105)
(46.833207518576465, 78.2801683810838)
(37.86736484348003, 77.49680057129092)
(29.816754354836903, 73.47341011545032)
(20.822013250759838, 73.78103402646268)
(87.0921419983132, 106.6283716496173)
(86.77840486780269, 97.63384170009026)
(78.16407779475766, 95.02743246925114)
(70.02882757413327, 91.17805539655082)
(61.50050332176587, 88.30269708036101)
(54.98537952281276, 82.09357782846105)
(46.833207518576465, 78.2801683810838)
(37.86736484348003, 77.49680057129092)
(29.816754354836903, 73.47341011545032)
(20.822013250759838, 73.78103402646268)
(87.0921419983132, 106.6283716496173)
(86.77840486780269, 97.63384170009026)
(78.16407779475766, 95.02743246925114)
所以它会无限期地重复。
我需要创建一个包含第一个循环值的列表,因为重复的值对我不感兴趣。
我正在使用
lst = [node]
new= []
for i in lst:
if i not in new:
new.append(i)
print new
但是这会返回并打印相同的节点变量值。
我的错误是什么?
答案 0 :(得分:0)
你已经做了一切正确的事情,除了新列表的打印,这应该完全没有缩进,正如VBB指出的那样。
答案 1 :(得分:0)
正如其他人所评论的,您的代码看起来不像Python。
我假设您的node
变量是元组的列表或元组。
node = [(87.0921419983132, 106.6283716496173),
(86.77840486780269, 97.63384170009026),
... ...]
在这种情况下,您只需使用
创建一个“uniq
'ed”元组
uniq_node = list(set(node))
如果订购不重要。
如果您希望保留订单,因为每个项目都显示在原始序列中,您可以尝试
seen = set()
uniq_node = []
for item in node:
if item in seen:
continue
seen.add(item)
uniq_node.append(item)
值得一提的是浮点精度。如果你确定你只想删除位级别的重复项,这很好。如果您还需要删除接近看到的项目,可能是由于数字不准确,这会中断。在这种情况下,您需要构建一个空间树并查找近邻而不是完全匹配。