列表中元素之间的距离

时间:2018-07-26 21:25:15

标签: python list distance

我试图在简单列表中的元素之间取得距离(以索引为单位)。这是我想出的:

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]之间的所有索引都为能够获得距离。

2 个答案:

答案 0 :(得分:2)

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

第二,一旦找到任何合格索引,就会从函数中返回。您永远不会停留足够长的时间来找到更多索引。

为什么将字符串“分解”为单个字符列表?您可以轻松地迭代字符串。


对于您最近遇到的字母差异问题,解决方案很简单:使用ord函数,该函数返回字符的序数(ASCII码)。

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

这将返回成对的相邻字母之间的绝对距离。

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

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

答案 1 :(得分:-1)

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

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

print(cos())