如何使用列表推导打印输出并保存在文件中?

时间:2017-09-14 20:18:54

标签: python

有没有办法使用列表理解来编写和打印?如果我使用For循环,我可以在for循环中做多个事情。

例如,

list1=[1,2,3,4,5,6,7,8,9]
write=open("test.txt",'w')
for i in list1:
    print (i**2)
    write.write(str(i**2)+"\n")
write.close()

如何使用列表理解做同样的事情?我可以使用列表理解进行打印或写入吗?

list1=[1,2,3,4,5,6,7,8,9]
write=open("test.txt",'w')
teste=[write.write(str(i**2) +"\n") for i in list1]
write.close()

2 个答案:

答案 0 :(得分:3)

你不应该对副作用使用列表理解(cleanest way to call one function on a list of items)。

但是,您可以使用str.join

在1条写入指令中写入所有数据
write.write("".join([str(i**2) +"\n" for i in list1]))

我不推荐这一点,但在一般情况下,因为如果list1很大,它会在内存中创建整个字符串。

您可以替代使用writelines

write.writelines("{}\n".format(i**2) for i in list1)

答案 1 :(得分:1)

您可以使用如下的生成器表达式写入文件:

list1=[1,2,3,4,5,6,7,8,9]

f = open('filename.txt', 'a').writelines(str(pow(i, 2)+"\n" for i in list1)