Python:在列表中不存在的位置追加新元组
我有三张单子。我想做的是在Tentree中查找第三项,如果该项不在集合中,那么我想将第三项附加到STree中 我将在Python:在列表中不存在的位置追加新元组,python,Python,我有三张单子。我想做的是在Tentree中查找第三项,如果该项不在集合中,那么我想将第三项附加到STree中 我将在I[2://code>中为循环testree[I]使用 给定数据: 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
I[2://code>中为循环testree[I]
使用
给定数据:
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])
在集合上每次迭代的代码中,您检查当前元素是否不等于试探树[2],并每次将其追加到SpanningTree(而不是检查并追加一次)。显然,您正在查找试探树[2],即您不检查元组,而是检查其中的每个数字(5.0,4.0)。在这种情况下,当然是x=因为x是一个浮点数,y是一个元组,所以得到了元组的2*4加法。你应该做什么(没有检查,但这是主要思想):
另外,最好使用python集类型而不是列表来防止多次出现。我做了一个小改动-添加了一个中断,这样在将诱惑树[2]添加到列表后,它就不会继续迭代。
for x in Set:
if x != TempTree[2]:
SpanningTree.append(TempTree[2])
break
print(SpanningTree)