列表中元素之间的距离

Distance between elements in the list

我正在尝试获取简单列表中元素之间的距离(以索引为单位)。这是我的发现:

def cos():
    x = "simpletext"
    testing = []
    my_x = [y for y in x]
    for let in my_x:
        if my_x.index(let) > 2 and my_x.index(let) < 7:
        testing.append(my_x.index(let))
        return testing

print(cos())

输出是 [3],但它应该是 [3,4,5,6] - 这些索引在 2 和 7 之间。虽然所有索引都在元素 x[2] 到 x[7] 之间,但我就能测出距离了。

您的错误是 return 语句的位置。您需要做的就是将它带到 for 循环之外,并在 for 循环结束后 return 。

def cos():
    x = "simpletext"
    testing = []
    for let in range(len(x)):
        if let > 2 and let < 7:
            testing.append(let)
    return testing

print(cos())

阅读文档:index returns 给定元素第 次出现的位置。

其次,一旦找到 any 符合条件的索引,您就可以从函数中 return 。您永远不会停留足够长的时间来找到更多索引。

为什么要"explode"把字符串变成单个字符的列表?您可以同样轻松地迭代字符串。


对于获取字母差异的更新问题,解决方案很简单:使用 ord 函数,该函数 return 是字符的序数(ASCII 码)。

dist = []
prev = str[0]
for next in str[1:]:
    dist.append(abs(ord(prev) - ord(next)))
    prev = next
return dist

这 return 是相邻字母对之间的绝对距离。

给定 str = "simpletext",我们得到输出

[10, 4, 3, 4, 7, 15, 15, 19, 4]