来自其他语言,我知道如何比较字符串索引以测试是否相等。但是在Python中,当尝试比较字符串中的索引时出现以下错误。TypeError: string indices must be integers
如何比较字符串的索引是否相等?
程序
myString = 'aabccddde'
for i in myString:
if myString[i] == myString[i + 1]:
print('match')
最佳答案
Python for
循环有时在其他语言中也称为“ foreach”循环。您没有遍历索引,而是遍历了字符串的字符。字符串是可迭代的,并且在迭代时会产生其字符。
您可能会发现this answer和this answer的一部分对理解Python中for
循环的工作原理很有帮助。
关于您的实际问题,itertools
documentation有一个名为pairwise
的配方。您可以复制粘贴该功能,也可以从more_itertools
(需要安装)将其导入。
演示:
>>> # copy recipe from itertools docs or import from more_itertools
>>> from more_itertools import pairwise
>>> myString = 'aabccddde'
>>>
>>> for char, next_char in pairwise(myString):
... if char == next_char:
... print(char, next_char, 'match')
...
a a match
c c match
d d match
d d match
我认为,应尽可能避免在迭代时显式使用索引。 Python具有高级抽象,使您大多数时候都不会被索引所困扰。另外,很多事情都是可迭代的,甚至无法使用整数索引。上面的代码适用于传递给
pairwise
的任何迭代,而不仅仅是字符串。关于python - 比较Python中的字符串索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52585235/