135

これよりも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

そうでない場合、私の質問は...なぜですか?この種のことを包括的なリストで行うことができるのであれば、 list の外側の単純なステートメントとしてはどうでしょうか?

4

13 に答える 13

262

Python 3.x を使用していると仮定します。

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

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) 
于 2013-04-02T16:27:43.107 に答える
29

私はいつもこれを使用しています:

#!/usr/bin/python

l = [1,2,3,7] 
print "".join([str(x) for x in l])
于 2013-04-02T16:28:06.767 に答える
9

[print(a) for a in list]すべてのアイテムを出力しますが、最後に一連の None タイプを提供します

于 2015-07-08T15:05:49.607 に答える
3

@lucasgの回答を拡張する(受け取ったコメントに触発された):

フォーマットされたリスト出力を取得するには、次の行に沿って何かを行うことができます:

l = [1,2,5]
print ", ".join('%02d'%x for x in l)

01, 02, 05

", "は区切り記号 (項目間のみで、最後ではありません) を提供し、'02d'と組み合わされた書式設定文字%x列は、各項目の書式設定された文字列を提供しますx。この場合、2 桁の整数として書式設定され、左側にゼロが埋められます。

于 2015-11-18T01:14:39.270 に答える
3

Python 2.* の場合:

Person クラスの関数 __str__() をオーバーロードする場合、map(str, ...) でその部分を省略できます。これの別の方法は、あなたが書いたように、関数を作成することです:

def write_list(lst):
    for item in lst:
        print str(item) 

...

write_list(MyList)

Python 3.* には、print() 関数の引数sepがあります。ドキュメントを見てください。

于 2013-04-02T16:35:00.710 に答える
0

リストが [1,2,3] で印刷されても問題ないと仮定すると、Python3 での簡単な方法は次のとおりです。

mylist=[1,2,3,'lorem','ipsum','dolor','sit','amet']

print(f"There are {len(mylist):d} items in this lorem list: {str(mylist):s}")

これを実行すると、次の出力が生成されます。

この lorem リストには 8 つの項目があります: [1, 2, 3, 'lorem', 'ipsum', 'dolor', 'sit', 'amet']

于 2018-10-21T13:33:33.027 に答える
0

OPの質問は次のとおりです。そうでない場合は、次のようなものが存在しますか

print(p) for p in myList # doesn't work, OP's intuition

答えは次のとおりです。

[p for p in myList] #works perfectly

基本的には、リストの理解に使用し、印刷を回避する[]ために取り除きます。印刷物がこれを表示する理由を確認するにはprintNoneprintNone

于 2018-11-16T07:15:58.687 に答える