python - 从元组列表中修改每个元组(并最终只是删除)

标签 python list tuples

我有一个这样的元组列表:

tradeRanges = [(0,3), (10,14), (16,16), (21,23), (25,25)]

我想做的是:

  1. 取出每个元组并分析两个数字之间的差异;
  2. 如果这个差异不为零,那么我想附加第三个元素,它实际上是这两个数字的差异;如果它为零,我只想将元组从列表中拉出。

因此,最终输出将是这样的:

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/

相关文章:

tuples - Mathematica 收集列表中的元素

python - 使用 Pandas 的 2 天跨度移动平均值

python - Python 中的元组声明

python - 如果我不说话,语音识别就会停止,如何让它继续听

python - 创建笛卡尔积的最快方法,对内没有重复元素

java - 将两个邻接列表合并到同一索引中的新列表中,保持相同的长度

list - 在 JavaFX TableView 中显示数据库中的项目

c++ - 具有元组类型子集相应参数的模板函数

python - 如何在 python-webkit 中设置用户代理

python - 请求帖子文件的 MIME 类型