关于python:错误:IndexError:字符串索引超出范围。

Error: IndexError: string index out of range. Trying to reverse the order of a list

本问题已经有最佳答案,请猛点这里访问。

我正在研究第7章"为每个人提供python"中的一个问题。程序的目的是获取一个文件,并以字符的相反顺序复制该文件。此代码在字符出现时列出它们,但当我使用时:

1
reversedList = sorted(charList, key=itemgetter(1), reverse=True)

我得到:indexerror:字符串索引超出范围。这是完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from _operator import itemgetter

def main():
     file = input("Enter the name of the file to be reversed:")
     file = open(file,"r")
     charList = []
     char = file.read(1)
     charList.append(char[0])
     while char !="" :
        char = file.read(1)
        charList.append(char)

     reversedList = sorted(charList, key=itemgetter(1), reverse=True)
     file.close()

main()

请告诉我这里出了什么问题。


我不明白你为什么要分类,你可以简单地使用:

1
reversedList = charList[::-1]

[::-1]反向列表、元组等。

itemgetter(..)在这里不起作用,因为它与您想要的相反:itemgetter(value)生成一个函数,期望列表并返回value的索引,但key不期望在索引上映射列表的函数,它期望将元素转换为要排序的度量。

一些有用但非常有效的方法是:

1
sorted(charList, key=charList.index, reverse=True)

尽管如此,我认为这本书不希望你使用sorted,如果你想自己写一个逆向函数,你可以使用例如:

1
2
3
reversedList = []
for i in range(len(charList)-1,-1,-1):
    reversedList.append(charList[i])