我有一个这样的元组列表:
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) 并将其删除时,它不会将元素 (10,14) 保存在内存中,而是保存元素 (16,16)。我对为什么会发生这种情况有一个模糊的想法(可能是 for 循环负责元素的定位?)但我不知道如何解决它。有没有什么优雅的方法或者我应该使用一些控制变量来考虑列表中元素的位置? tups = 元组(tups) tradeRanges.append(tups)
最佳答案
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)]
关于python - 从元组列表中修改每个元组(并最终只是删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22074211/