Pythonでリストをただ単にprint()
で表示すると、1行につながってしまうので読みづらいですよね。
要素ごとに改行を挟んで表示したい、、、そういう時はこうやるのが一番簡単だと思います。
words = ['alpha', 'bravo', 'charlie', 'delta']
print(*words, sep='\n')
listだけでなく、generatorなどのIterableなものでも行けます。
sequence = range(10)
print(*sequence, sep='\n')
dictならこうです。
prices = dict(orange=100, apple=120, melon=1000)
print(*prices.items(), sep='\n')
*
の機能については「python
unpack
arguments
」あたりで調べてください。
おまけ
後片付け
プロダクションコードにデバッグprint文を残さないように気をつけましょう。
それがプロダクションコードとして必要なデバッグログであるなら、loggerを使って出力するようにしましょう。1
うっかり対策
自分の場合、うっかりデバッグprint文を残さないように以下のようなコメントを付け、
print(*obj, sep='\n') # XXX
git push
する前にgrep XXX
したり2IDEの機能3でXXXコメント4を探すようにしています。
printデバッグの良し悪し
それが効率の良いデバッグ手段なら構わないと思います。
しかし、ループの深ーーーい所でprintして、大量の表示で見るべき箇所を見失った・どこから間違いが混入したのかわからない、みたいなことになっていないでしょうか?
そういう場合はprintデバッグが悪いと決めつけるのではなく、適切に関数化・モジュール化がされていない可能性を考慮すべきでしょう。
最小の実行単位でテストできるようになっていれば、printデバッグも捗ります(もちろん、それ以外もいろいろと捗ります)。
-
手前味噌ですが「最初に覚えて欲しいPythonのロギング」 ↩
-
find . -name "*.py" | xargs grep XXX
↩ -
PyCharmならSettings...>Editor>TODOに
\bXXX\b.*
を追加して"TODO"タブで一覧表示。Eclipseにも似たような機能があった気がします。 ↩