查找具有特殊编号设置的列表索引差异



假设我有一个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]

有人能帮忙吗?

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]

最新更新