【问题标题】:Using `map` to write lines to files使用 `map` 将行写入文件
【发布时间】: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


【解决方案1】:

你的意思是:

map(lambda (x,y): y.write(x + "\n"), zip(lines,files))

但我宁愿这样做:

for l, f in zip(lines,files):
    f.write(l + "\n")

【讨论】:

  • 强调:如果您不打算使用它返回的列表值,请不要使用map
猜你喜欢
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 2020-12-13
  • 2019-05-09
  • 2013-09-18
  • 2018-05-11
  • 2016-01-29
  • 2018-12-10
相关资源
最近更新 更多