首页 > 解决方案 > 遍历字符列表,但不超出索引

问题描述

我想循环一串字符;如果一个字符符合某个标准,那么我想在它之后立即调整字符。问题是,如果有问题的字符是字符串中的最后一个字符,并且我想调整超出该字符的字符,那么我就超出了索引范围。

如何在不超出索引的情况下遍历字符串?

letters_of_name = ["j", "e", "l", "l", "o"]

def uppercase_specific_letters(letter):

    for ch_index, ch in enumerate(letters_of_name):
        if ch == letter:

            if letters_of_name[ch_index + 1] != ch:
                letters_of_name[ch_index + 1] = letters_of_name[ch_index + 1].upper()

            new_name = "".join(letters_of_name)
            return new_name

标签: pythonloops

解决方案


一种方法是使用不包括最后一个字符的字符串切片。

for ch_index, ch in enumerate(letters_of_name[:-1]):

另一种选择是使用 仅循环索引range(),并使用 length-1 作为限制而不是长度。

for ch_index in range(len(letters_of_name)-1):
    ch = letters_of_name[ch_index]

推荐阅读