您得到的错误是因为i
is astring
但索引必须是integers
。(这应该从错误消息中清楚)。将这部分更改if s[i] ==c:
为if i == c:
将使您的代码运行,但我认为它不会为您提供您真正想要的答案。
由于您想要字符与查询索引相同的最近索引,因此我认为您应该得到一个结果列表,该列表应该len
与您的 .gth的 gth 一样长queries
。下面是一些可以帮助您实现该目标的代码。我还扩展了您的示例以增强理解。
s = "abcaccba"
queries = [1,3,2,0, 5]
def closest(s, queries):
print('String: ', s)
print('Query: ', queries)
results = []
for query in queries:
c = s[query]
if s[query] in s[query+1 :]:
results.append(('query = {}'.format(query), 'character = {}'.format(c), 'index of next occurrence = {}'.format(1+query+s[query+1 :].index(c))))
#results.append((query, c, 1+query+s[query+1 :].index(c)))
else:
results.append(('query = {}'.format(query), 'character = {}'.format(c), 'index of next occurrence = {}'.format(-1)))
#results.append((query, c, -1))
return results
closest(s = s, queries = queries)
这是输出
String: 'abcaccba'
Query: [1, 3, 2, 0, 5]
[('query = 1', 'character = b', 'index of next occurrence = 6'),
('query = 3', 'character = a', 'index of next occurrence = 7'),
('query = 2', 'character = c', 'index of next occurrence = 4'),
('query = 0', 'character = a', 'index of next occurrence = 3'),
('query = 5', 'character = c', 'index of next occurrence = -1')]