1. ホーム
  2. python

[解決済み] リストアイテムを印刷するPythonicな方法

2022-06-19 06:05:06

質問

Pythonのリストにあるすべてのオブジェクトを表示するために、これより良い方法があるかどうかを知りたいです。

myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar

私はこの方法が本当に良いものではないと読みました。

myList = [Person("Foo"), Person("Bar")]
for p in myList:
    print(p)

のようなものはないのでしょうか?

print(p) for p in myList

そうでないとしたら、私の疑問は...なぜでしょうか?包括的なリストでこのようなことができるのであれば、なぜリストの外側の単純なステートメントとしてできないのでしょうか?

どのように解決するのですか?

Python 3.xを使用していると仮定した場合。

print(*myList, sep='\n')

Python 2.xでも同じように from __future__ import print_function を使用すると、コメントでmgilsonによって指摘されたように、Python 2.xで同じ動作を得ることができます。

Python 2.xのprint文では、何らかのイテレーションが必要でしょう。 print(p) for p in myList に関するあなたの質問について、あなたは同じことを行い、まだ1行である、次のものを使用することができます。

for p in myList: print p

を使用するソリューションの場合 '\n'.join() を使うソリューションでは、リスト内包やジェネレータの方が map() よりもリスト内包やジェネレータの方が好きなので、以下のような使い方をすると思います。

print '\n'.join(str(p) for p in myList)