【问题标题】:Finding List index differences with special number setting使用特殊编号设置查找列表索引差异
【发布时间】:2022-10-06 12:17:20
【问题描述】:

假设我有一个这样的 Python 列表:

a = [70,66,63,-1,-1,68,-1,70]

通过以下代码,我可以获得非减一元素之间的索引差异列表(因为 -1 不会出现在列表的末尾):

res = [idx for idx, val in enumerate(a) if val != -1]
index_diff = [x - res[i - 1] for i, x in enumerate(res)][1:]

index_diff 看起来像这样:

[1, 1, 3, 2]

现在我想做一些调整,因为63和68之间有两个-1,68和70之间有一个-1,我想减去它们之间的-1个数,所以目标应该是这样的:

[1,1,1,1]

任何人都可以帮助解决这个问题吗?

    标签: python list


    【解决方案1】:
    a = [70,66,63,-1,-1,68,-1,70]
    res = [idx for idx, val in enumerate(a) if val != -1]
    index_diff = [x - res[i - 1] for i, x in enumerate(res)][1:]
    

    跟踪我们已经遍历的索引,然后进行减法。

    sumx = 0
    new_count = []
    for x in index_diff:
        if x == 1:
            sumx +=1
            new_count.append(x)
        else:
            new_count.append(x - len(a[sumx+1:sumx+x]))
            
    print(new_count)
    

    [1, 1, 1, 1]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多