来自其他语言,我知道如何比较字符串索引以测试是否相等。但是在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 answerthis 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/

10-12 17:53
查看更多