a = [('08:57', 'Edinburgh', '12:08'), ('12:08', 'London', '12:50'), ('12:50', 'London', 14:44')]
所以我有时间列表(这些是公共(public)汽车旅程),如上面的“a”,每个元组包含行程的开始和停止时间以及车站名称。然而,它们有时也包含只是“在公共(public)汽车站等候”的腿。这些可以通过开始时间与前一段的停止时间相同以及停止时间与下一段的开始时间相同的事实来识别。我想识别这些然后删除它们。我想知道集合,但公交车站的命名搞砸了,然后我想知道发电机。
所以有些粗糙,比如:
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'
确实有效,但它很糟糕,不允许我识别原始元组的索引位置以将其删除。
非常希望有一种方法。
最佳答案
您可以遍历相邻腿的所有三元组并使用过滤掉不需要的腿
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
中至少有两条腿。)
关于python - 比较 python 元组以查找在上一个和下一个元组中也找到的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822307/