2016-08-27 4 views
0

にラインを書くために、 `map`を使用した:私は行のリストを持つファイル

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(lambda (x,y): y.write(x + "\n"), zip(lines,files)) 

をしかし、私はむしろとしてそれを行うだろう:

+3

マップは、forループを定期的に使用しないのはなぜ変革の方法ですか...?あなたの問題は、writeメソッドがNoneを返し、 'x 'の代わりにその行に改行を追加したことです。 –

+3

これはひどい考えであり、Python 3を使って書いていません。あなたのアプローチも通常のforループを使用するよりも遅くなるでしょう –

+0

なぜ誰もこれをdownvoteだろうか? –

答えて

4

は、あなたがするもしかして

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

強調するには、返すリスト値を使用する予定がない場合は 'map'を使用しないでください。 – chepner

関連する問題