2017-07-29 24 views
2

フォーマットを使ってリストをtxtファイルに出力したい。しかし、リストの長さは時々変化します。Pythonがtxtファイルに可変長リストを書き込む

コードは次のようである:

a = [1, 2, 3] #**but this could also be: a = [1, 2, 3, 6, 9] or [1, 90]** 
with open('node.k','w') as file: 
    file.write(((len(a)-1)*'{},'+'{}\n').format(a[0],a[1],a[2])) 

私はこのコードは別のリストの長さのために働くことができるように、私はこのコードを変更する必要がありますか不思議でしたか?

+1

開梱リスト: '形式(* a)は' –

答えて

4

だけmapjoin使用:

a = [1,2,3] 

with open('node.k','w') as file: 
    file.write(','.join(map(str,a))+'\n') 
4

としては、あなたがstr.format()unpacking your listによってこれを行うことができ、コメントで述べている:

>>> a = [1, 2, 3] 
>>> ((len(a)-1)*'{},'+'{}\n').format(*a) 
'1,2,3\n' 
>>> a = [1, 2, 3, 7, 60] 
>>> ((len(a)-1)*'{},'+'{}\n').format(*a) 
'1,2,3,7,60\n' 

これを行うことにより、明示的にそのインデックスのそれぞれによってaに合格することを避けるため。しかし、これはmap()str.join()を使ってきれいに行うことができます。

>>> a = [1, 2, 3] 
>>> ','.join(map(str, a)) + '\n' 
'1,2,3\n' 
+0

@downvoterができれば、私はそれを感謝します彼らの推論を説明する? –

関連する問題