我有一个像这样的元组列表:
tradeRanges = [(0,3), (10,14), (16,16), (21,23), (25,25)]
我想做的是:
因此,最终输出将是:
tradeRanges = [(0,3,3), (10,14,4), (21,23,2)]
出于这个目的,我尝试编写以下脚本:
for tups in tradeRanges:
tradeRanges.remove(tups)
tups = list(tups)
lenTup = tups[1]-tups[0]
if lenTup > 0:
tups.append(lenTup) #so when it's done I would have the list into the same order
tups = tuple(tups)
tradeRanges.append(tups)
这里的问题是它会跳过元素。当它获得元素(0,3)并将其删除时,它将保存元素(16,16)而不是在内存中保存元素(10,14)。我有一个模糊的想法,为什么会发生这种情况(可能for循环正在处理元素的定位?)但我不知道如何修复它。有没有优雅的方法或者我应该使用一些控制变量来考虑列表中元素的位置? tups =元组(tups) tradeRanges.append(tups)
答案 0 :(得分:5)
tradeRanges = [(0,3), (10,14), (16,16), (21,23), (25,25)]
print [(n1, n2, abs(n1-n2)) for n1, n2 in tradeRanges if n1 != n2]
# [(0, 3, 3), (10, 14, 4), (21, 23, 2)]