使用功能遍历列表

时间:2019-04-10 15:08:00

标签: python python-3.x

我想遍历python中的列表,并在其后打印单词“ hello”。但是,我没有得到想要的输出。

代码读取具有数字ID的文本文件。我创建了读取ID的列表,并使用for循环对其进行了迭代。以下是我的代码:

def read_file():
 pmid_s = []
 file_object = open("file.txt", "r", encoding='cp1252')
 pmid =file_object.read()
 pmid_s.append(pmid)
 for pmid in pmid_s:
    return(pmid)

def driver(pmid):
 print("hello"+pmid) 

def main():
 pmid= read_file
 driver(pmid)

if __name__ == '__main__':
   main()

所需的输出在新行中如下:

hello1
hello2
hello3
hello4
hello5

2 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,则需要使用driver(pmid)而不是return(pmid)。 另外,您可以使用split()方法拆分直接读取的内容,并且此后无需追加。参见下文:

def read_file():
    pmid_s = []
    file_object = open("file.txt", "r", encoding='cp1252')
    pmid_s =file_object.read().split()
    for pmid in pmid_s:
        driver(pmid)


def driver(pmid):
    print("hello {} \n ".format(pmid))


def main():
    pmid= read_file()


if __name__ == '__main__':
    main()

我还假设您读取的数字之间用空格隔开

答案 1 :(得分:1)

您有一个由一系列整数组成的文件,每行一个。文件迭代器产生文件的行。您可以通过遍历文件本身来构建列表。

def read_file(fname):
    with open(fname, "r", encoding='cp1252') as f:
        return [line.strip() for line in f]

def driver(s):
    print("hello" + s)

def main():
    for num in read_file("file.txt"):
        driver(s)

if __name__ == "__main__":
    main()

如果您想偷懒地做,请将read_file设为生成器函数。

def read_file(fname):
    with open(fname, "r", encoding='cp1252') as f:
        for line in f:
            yield line.strip()

当使用者尝试从生成的生成器中读取下一个项目时,一次只能将文件的一行读取到内存中。