Python:在列表中不存在新元组

时间:2015-11-27 08:25:33

标签: python

我有三个清单。我想要做的是在TempTree中查找第3项,如果Set中没有此项,那么我想将第三项添加到STree中。

我将使用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)]

2 个答案:

答案 0 :(得分:1)

你在寻找什么?

if TempTree[2] not in Set:
    SpanningTree.append(TempTree[2])

在Set上每次迭代的代码中,检查当前元素是否等于TempTree [2]并每次将其附加到SpanningTree(而不是检查并追加一次)。

答案 1 :(得分:1)

显然,你正在寻找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来防止多次出现。