用于从元组列表中查找唯一路径的Python代码

时间:2015-12-11 08:23:16

标签: python list tuples

p=[(0, 2), (2, 6), (6, 7), (7, 3), (3, 7), (7, 6), (6, 4), (4, 5), (5, 4), (4, 1), (1, 4), (4, 6), (6, 2)]

我需要帮助编写一个python代码,介绍如何只返回一次出现的值然后突破循环? 例如,这里

我们返回list= 0,2,6,7,3。但是在列表p中,因为(3,7)之前已经存在 作为(7,3),我们打破了循环。

2 个答案:

答案 0 :(得分:1)

''' 如果您所需的输出是列表[0,2,6,7,3],则可以使用以下方法:'''

p = [(0, 2), (2, 6), (6, 7), (7, 3), (3, 7), (7, 6), (6, 4), (4, 5), (5, 4), 
    (4, 1), (1, 4), (4, 6), (6, 2)]
out_data = []
for i in p:
    if i[0] not in out_data:
        out_data.append(i[0])
    else:
        break
print(out_data)

答案 1 :(得分:0)

如果您的所需输出是列表[0, 2, 6, 7, 3],那么您可以使用以下方法:

p = [(0, 2), (2, 6), (6, 7), (7, 3), (3, 7), (7, 6), (6, 4), (4, 5), (5, 4), (4, 1), (1, 4), (4, 6), (6, 2)]
present = {}
output = []

for x in p:
    output.append(x[0])

    if frozenset(x) in present:
        break
    else:
        present[frozenset(x)] = 0

print output

这使用Python的frozenset作为字典键来确定您的数字对是否已经被看到,并且突破循环。

它将显示以下内容:

[0, 2, 6, 7, 3]