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,并且不允许我识别原始元组的索引位置以删除它。
真的很感激这种方法。
答案 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
中至少有两条腿。)