我试图在简单列表中的元素之间取得距离(以索引为单位)。这是我想出的:
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]之间的所有索引都为能够获得距离。
答案 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())