私はこれよりも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')
コメントのmgilsonで述べられているように、Python 2.xでもfrom __future__ import print_function
を使用して同じ動作を得ることができます。
Python 2.xのprint文では、print(p) for p in myList
が機能しないというあなたの質問に関して、何らかの繰り返しが必要になるでしょう。同じことをしていて、まだ一行である次のようにしてください。
for p in myList: print p
'\n'.join()
を使う解決法のために、私はおそらくmap()
よりリスト内包表記とジェネレータを好むので、私はおそらく以下を使うでしょう:
print '\n'.join(str(p) for p in myList)
私はこれをいつも使っています:
#!/usr/bin/python
l = [1,2,3,7]
print "".join([str(x) for x in l])
[print(a) for a in list]
はすべての項目を出力しますが、最後にNone型の束を与えます。
Python 2の場合*:
Personクラスの関数__str __()をオーバーロードする場合は、map(str、...)の部分を省略できます。もう1つの方法は、あなたが書いたように、関数を作成することです。
def write_list(lst):
for item in lst:
print str(item)
...
write_list(MyList)
Python 3には*があります。* print()関数の引数sep。ドキュメントを見てください。
@ lucasgの回答を拡大しました(受け取ったコメントに触発されました)。
フォーマットされたリスト出力を得るためには、これらの行に沿って何かをすることができます:
l = [1,2,5]
print ", ".join('%02d'%x for x in l)
01, 02, 05
これで", "
はセパレータを提供し(最後ではなく項目間のみ)、'02d'
と結合されたフォーマット文字列%x
はx
の各フォーマットのフォーマットされた文字列を与えます。
各コンテンツを表示するには、次のようにします。
mylist = ['foo', 'bar']
indexval = 0
for i in range(len(mylist)):
print(mylist[indexval])
indexval += 1
関数内での使用例
def showAll(listname, startat):
indexval = startat
try:
for i in range(len(mylist)):
print(mylist[indexval])
indexval = indexval + 1
except IndexError:
print('That index value you gave is out of range.')
私が助けたことを願っています。
リストの内容を見たいだけなら、これが最も便利だと思います。
myList = ['foo', 'bar']
print('myList is %s' % str(myList))
シンプルで読みやすく、フォーマット文字列と一緒に使用できます。
OPの質問は以下のとおりです。以下のようなことがありますが、そうでない場合はなぜ
print(p) for p in myList # doesn't work, OP's intuition
答えは、それは存在しますこれは、
[p for p in myList] #works perfectly
基本的には、リストの理解には[]
を使い、print
の出力を避けるためにNone
を取り除いてください。 print
がNone
を印刷する理由を確認するには、 this を参照してください。
私は最近パスワードジェネレータを作りました、そして私はpythonに非常に新しいですが、私はこれをリストにすべての項目を表示する方法としてあなたのニーズに合うように小さな編集で...ホイップしました...
x = 0
up = 0
passwordText = ""
password = []
userInput = int(input("Enter how many characters you want your password to be: "))
print("\n\n\n") # spacing
while x <= (userInput - 1): #loops as many times as the user inputs above
password.extend([choice(groups.characters)]) #adds random character from groups file that has all lower/uppercase letters and all numbers
x = x+1 #adds 1 to x w/o using x ++1 as I get many errors w/ that
passwordText = passwordText + password[up]
up = up+1 # same as x increase
print(passwordText)
私が言ったように、IMはPythonにはとても新しく、これは専門家にとって不格好な方法であると確信していますが、別の例としてここに来ただけです。
あなたのリストがうまく印刷されているとしたら[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}")
これを実行すると、以下の出力が生成されます。
このロレムリストには8つの項目があります:[1、2、3、 'lorem'、 'ipsum'、 'dolor'、 'sit'、 'amet']