【发布时间】:2016-08-27 12:47:57
【问题描述】:
我有一个行列表:
lines = [a,b,c,d]
还有一个文件列表(通过open(path string,'w')创建:
files = [e,f,g,h]
我要做的是将每一行写入其各自的文件(行a 应该与文件e 和一个新行一起使用)。请注意,这是一个更大的循环的一部分,用于生成行并将它们放入您看到的行列表中:
这是我目前的方法:
map(lambda (x,y): y.write(x) + "\n",zip(lines,files))
但这就是我得到的:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
什么是实现我需要的方法?将每一行单独写入每个文件非常麻烦。
【问题讨论】:
-
map 是一种转换方法...为什么不使用常规的 for 循环?您的问题是 write 方法返回 None 并且您添加了一个换行符而不是
x -
这是一个糟糕的主意,即使你让它在地图对象上使用调用列表,也不会使用 Python 3 编写,你的方法也比使用常规 for 循环慢得多
-
为什么会有人反对这个?
-
@Dhruv,可能是因为您应该能够自己弄清楚这是一个印刷错误。
-
一个印刷错误是
labmda,不是试图添加两个不兼容的类型。
标签: python python-2.7 function dictionary lambda