列表中元素之间的距离
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]
我正在尝试获取简单列表中元素之间的距离(以索引为单位)。这是我的发现:
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]