LoginSignup
5
5

More than 3 years have passed since last update.

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デバッグも捗ります(もちろん、それ以外もいろいろと捗ります)。


  1. 手前味噌ですが「最初に覚えて欲しいPythonのロギング」 

  2. find . -name "*.py" | xargs grep XXX 

  3. PyCharmならSettings...>Editor>TODOに\bXXX\b.*を追加して"TODO"タブで一覧表示。Eclipseにも似たような機能があった気がします。 

  4. 「TODO: 以外のアノテーションコメントをまとめた」 

5
5
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5