Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用列表理解打印输出并保存到文件中?_Python - Fatal编程技术网

Python 如何使用列表理解打印输出并保存到文件中?

Python 如何使用列表理解打印输出并保存到文件中?,python,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=o

有没有一种方法可以使用列表理解来书写和打印?如果我使用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()

你不应该使用列表理解来产生副作用

但是,您可以使用str.join在一条写入指令中写入所有数据:

虽然在一般情况下,我不建议这样做,因为如果list1很大,它会在内存中创建整个字符串

您可以交替使用writeline


可以使用生成器表达式写入文件,如下所示:

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)

您使用的是哪个版本的python?我使用的是2.7。如果你能同时回答2.7版和3.6版的问题,那就太好了。谢谢,Shonew为什么要使用列表?只使用列表理解来创建列表,而不是做其他事情。我只是想知道,在使用列表理解时,是否有一种方法可以用列表做多项事情,我正在尝试学习列表理解。@Sam:有一些方法,但这些都是无意义的。不要使用列表理解来做副作用。它们非常适合构建列表,对其他任何东西都不好。从uuu future uuuuu导入print u函数,然后在列表1中为i打印*i**2,sep='\n',file=write我想添加以下内容,我想你也可以在其中使用元组,比如[printbla1,printbla2 for i in list],但我不会这么做,因为,列表理解仅用于以列表形式生成数据,而不用于执行语句或任何其他副作用,如多次写入文件。找一找。@roganjosh:@roganjosh Martjin不喜欢太唠叨。只是传递一个gencomp加入并不会更快,因为无论如何都必须构建列表。同样适用于分类顺便说一句。谢谢!!我得到了它。除了创建列表之外,对任何事情使用列表理解都不是一个好主意。
write.writelines("{}\n".format(i**2) for i in list1)
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)