簡體   English   中英

Python:在列表中不存在的地方添加新的元組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM