识别每个位置对应项的循环或函数

Loop or function that recognizes the corresponding item of each position

我有以下列表:

Nlist= [1,2,3,1,3,2,4,4,2,1,3,4,2,2]

我想得到这个结果:

result=["first appearance 1","first appearance 2","first appearance 3",3,2,4,"first appearance 4",1,3,6,6,4,1]

请注意,循环或函数必须从每个位置识别项目,并从当前位置减去前一个位置,依此类推,直到 Nlist 结束。

我自己能做的最好的就是下面的代码,但这不是我需要的。

from collections import defaultdict as cd

keys= cd(list); # create dictionary

for key,value in enumerate(Nlist):
    keys[value].append(key)
    # add the positions


import numpy as np

chav_test= keys[1] #select the key

key_test=np.diff(chav_test)

print(key_head)

请注意,在上述代码的情况下,我必须 select 其中一项的键,而我正在寻找的是能够识别该项目的循环或函数从每个位置并从前一个位置减去当前位置,结果只生成一个列表结尾。有人可以帮我解决这个问题吗?谢谢!

您可以遍历列表,同时通过将每个项目存储在字典中来跟踪每个项目的先前位置。因此,您可以查找先前的位置并相应地构建 result 列表:

previous_position = {}
result = []

for index, item in enumerate(Nlist):
    if item in previous_position:
        result.append(index - previous_position[item])
    else:
        result.append(f'first appearance {item}')
    previous_position[item] = index