比较python元组以查找在前一个和下一个元组中也可以找到的值

时间:2012-03-22 12:28:55

标签: python list comparison tuples

a = [('08:57', 'Edinburgh', '12:08'), ('12:08', 'London', '12:50'), ('12:50', 'London', 14:44')]

所以我有上面的'a'时间列表(这些是公共汽车旅程),每个元组包含腿的开始和停止时间以及电台名称。然而,它们有时也包含只是“在公交车站”等待的腿。这些可以通过以下事实来识别:开始时间与前一段的停止时间相同,并且停止时间与后一段的开始时间相同。我想识别这些,然后删除它们。我想知道有关套装,但是公交车站的命名螺丝起来然后我想知道发电机。

粗暴的事情如下:

gen = (item for item in a) #turn list into generator object

try:
    while 1:
        if gen.next()[2] == gen.next()[0] and gen.next()[0]:
            print 'match'
except StopIteration:            
    print 'all done'

确实有效,但它是naff,并且不允许我识别原始元组的索引位置以删除它。

真的很感激这种方法。

1 个答案:

答案 0 :(得分:1)

您可以迭代所有相邻腿的三元组,并使用

过滤掉不需要的腿
filtered_a = [a[0]]
for x, y, z in zip(a, a[1:], a[2:]):
    if x[2] != y[0] or y[2] != z[0]:
        filtered_a.append(y)
filtered_a.append(a[-1])

(此代码假设a中至少有两条腿。)