如何递归读取列表中的所有字符?

2024-10-17 06:25:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要写一个函数来递归读取文件中的所有字符并附加到列表中。递归一直困扰着我,任何关于递归思考的技巧我都很欣赏。 下面是我写的打印列表字符的代码,没有递归

def newChar(usrFile,usrList):

    for line in usrFile:
        for c in line:
            usrList.append(c)

    print(usrList)


def main():
    usrFile = open("input.txt",'r')
    usrList = []
    newChar(usrFile,usrList)



main()

结果:

['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', ' ', 'p', 'r', 'i', 'n', 't', ' ', 'a', 'l', 'l', ' ', 't', 'h', 'e', 's', 'e', ' ', 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', 's', '.']

Tags: 文件函数代码in列表for技巧main
1条回答
网友
1楼 · 发布于 2024-10-17 06:25:32

考虑递归的一种方法是尝试只解决问题的一小部分,然后想象递归调用“神奇地”解决了问题的其余部分。重要的是,当剩下的问题很难解决时,你必须考虑会发生什么;这称为基本情况

在这种情况下,我们可以在一个递归调用中解决的小问题是读取单个字符(字节)。如果文件中没有字符,则出现基本大小写;当这种情况发生时,您不向列表中添加任何内容,只返回您已经建立的内容

这个想法可以实现如下

f = open('test_file.txt', 'r')
char_list = []

def read_rec(fh, chars):
    curChar = fh.read(1)
    if curChar: #returns False at the end of the file
        chars.append(curChar) #append to chars
        return read_rec(fh, chars) #recursively read the rest of the file
    return chars

print read_rec(f, char_list)

输出

['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', ' ', 'm', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'G', 'a', 'r', 'r', 'e', 't', 't', '\n']

相关问题 更多 >