[英]Python: Append new tuples where not exists in an list
我有三个清单。 我想做的是在TempTree中查找第三个项目,如果Set中不存在该项目,那么我想将此第三个项目附加到STree中。
我将使用来自i[2:]
的for
循环TempTree[i]
i[2:]
。
给定数据:
TempTree = [(3.0, 5.0), (1.0, 7.0), (5.0, 4.0), (3.0, 4.0), (0.0, 7.0), (1.0, 2.0), (7.0, 8.0), (2.0, 3.0), (8.0, 6.0), (0.0, 1.0), (2.0, 5.0), (2.0, 8.0), (6.0, 5.0), (7.0, 6.0)]
Set = [(3.0, 5.0), (5.0, 3.0), (1.0, 7.0), (7.0, 1.0)]
SpanningTree = [(3.0, 5.0), (1.0, 7.0)]
我的代码:
for x in TempTree[2]:
for y in Set:
if x != y:
SpanningTree.append(TempTree[2])
print(SpanningTree)
我的结果:
[(3.0, 5.0), (1.0, 7.0), (5.0, 4.0), (5.0, 4.0), (5.0, 4.0), (5.0, 4.0), (5.0, 4.0), (5.0, 4.0), (5.0, 4.0), (5.0, 4.0)]
所需结果:
[(3.0, 5.0), (1.0, 7.0), (5.0, 4.0)]
你在找什么
if TempTree[2] not in Set:
SpanningTree.append(TempTree[2])
然后在Set上每次迭代的代码中,检查当前元素是否不等于TempTree [2],并每次将其附加到SpanningTree(而不是一次检查并附加一次)。
显然,您正在看的是TempTree [2],即您没有检查元组,而是检查其中的每个数字(5.0,4.0)。 在这种情况下,当然x!= y是因为x是一个浮点数,而y是一个元组,因此您将获得2 * 4个元组的加法。 您应该做什么(没有检查,但这是主要思想):
for x in Set:
if x != TempTree[2]:
SpanningTree.append(TempTree[2])
break
print(SpanningTree)
另外,最好使用python Set类型而不是List来防止出现多次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.