如何获取python列表中每个重复单词的距离?

如何获取python列表中每个重复单词的距离?,python,list,Python,List,我想知道的是Python语法中重复单词之间的距离,分为固定的间隔。下面的代码将告诉您列表中类似单词的索引 A = ['dcv', 'asc', 'dfg','lku','drf','asd','dcv','tfd','cfv','asc','dds','ast','lku'] 'dcv': 6 'asc': 8 'lku': 9 当您在迭代时遇到这些值时,只需使用dict来存储它们的索引。如果已经看到一个值,请打印距离: A = ['dcv', 'asc', 'dfg','lku','drf'

我想知道的是Python语法中重复单词之间的距离,分为固定的间隔。

下面的代码将告诉您列表中类似单词的索引

A = ['dcv', 'asc', 'dfg','lku','drf','asd','dcv','tfd','cfv','asc','dds','ast','lku']
'dcv': 6
'asc': 8
'lku': 9

当您在迭代时遇到这些值时,只需使用dict来存储它们的索引。如果已经看到一个值,请打印距离:

A = ['dcv', 'asc', 'dfg','lku','drf','asd','dcv','tfd','cfv','asc','dds','ast','lku']

d = {}
for i, word in enumerate(A):
    if word in d:
        print(f'{word}: {i - d[word]}')
    d[word] = i
输出:

A = ['dcv', 'asc', 'dfg','lku','drf','asd','dcv','tfd','cfv','asc','dds','ast','lku']

d = {}
for idx, value in enumerate(A):
    if value in d:
        print(f'{value}: {idx - d[value]}')
    d[value] = idx

这回答了大部分问题,但这确实是低效的,因为它是关于O(n^2),而它可以在O(n)中完成。@thierrylahuille我不知道O(n^2)或O(n)。你能给我提供一些学习的参考资料吗。谢谢。上面的结果是:lku[3,12],重复单词之间的距离是:9,dcv[0,6]。。。。这样地。我有点困惑。我不知道结果意味着什么。我能得到像我说的更简洁的结果吗?你有两个叠瓦循环,它们将运行(不同单词的数量)*(初始列表的长度)的总次数,这大约是数据大小的平方。因此,如果数据变大10倍,处理它所需的时间将增加100倍左右。我添加了一个答案,显示了一种只对数据进行一次迭代的方法,因此操作的数量与数据的大小成正比。。我把事情弄复杂了。这太简单了。谢谢:)
dcv: 6
asc: 8
lku: 9