回答:
Python 2の場合:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
Python 3の場合(print
は組み込み関数であり、もう構文機能ではありません):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
どちらも戻ります:
[x, 3, b]
これは、map()
関数を使用してmylistの各要素に対してstrを呼び出し、文字列の新しいリストを作成して、で1つの文字列に結合しますstr.join()
。次に、%
文字列の書式オペレータはではなく、文字列を置換%s
して"[%s]"
。
map
関数を使用してのstr
各要素を呼び出しmylist
、文字列の新しいリストを作成して、で1つの文字列に結合していstr.join
ます。その後、彼は使用%
中の代わりの文字列を置換するオペレータをフォーマット文字列%s
にします"[%s]"
。
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)
(またはimap
python2.xで)よりも好む傾向があります。これは実行するバイトコードが少なくなる傾向があり、通常はよりコンパクトです。確かにいけないよりもはるかに悪いザッツ(f(x) for x in xs)
f
map(lambda x:..., xs)
(... for x in xs)
Python3を使用している場合:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
を使用する代わりに、イテレータを受け入れるmap
機能を持つジェネレータ式を使用することをお勧めしjoin
ます。
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
ここでjoin
は、文字列クラスのメンバー関数ですstr
。引数は1つです。文字列のリスト(またはイテレータ)で、すべての要素を連結した新しい文字列を返します(この場合は),
。
", ".join( str(x) for x in list_or_iterator).join('[]')
引数にtranslate()
methodを使用し、その後None
にtable
引数から削除する文字を含む文字列を続けて、文字列から不要な文字をすべて削除できdeletechars
ます。
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
2.6より前のバージョンのPythonを使用している場合、引数として渡す機能はPython 2.6まで追加されていなかったため、代わりにstring
モジュールのtranslate()
関数を使用する必要があります。これを使用すると、次のようになります。None
table
import string
print string.translate(str(lst), None, "'")
string.translate()
関数の使用は2.6以降でも機能するため、使用することをお勧めします。
lst = ["it isn't", 3, 'b']
==> ["it isnt", 3, b]
とlst = ['it isn\'t', 3, 'b']
これは、@ TokenMacGuyのワンライナーのいくつかのステップを示すインタラクティブセッションです。まず、map
関数を使用してリストの各アイテムを文字列に変換します(実際には、古いリストのアイテムを変換するのではなく、新しいリストを作成しています)。次に、彼は文字列メソッドjoin
を使用して、それらの文字列を', '
それらの間で結合しています。残りは単なる文字列フォーマットで、これはかなり簡単です。(編集:このインスタンスは簡単です。文字列の書式設定は一般に多少複雑になる場合があります。)
を使用するjoin
と、いくつかの部分文字列から文字列を作成する簡単で効率的な方法であることに注意してください。文字列に文字列を連続して追加するよりもはるかに効率的です。
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
.format
文字列のフォーマットに使用し、
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
出力:
[x, 3, b]
説明:
map
リストの各要素をstring
タイプにマップするために使用されます。,
、区切り記号として文字列に結合されます。[
and を使用し]
て、リストの中括弧を表示します。.format
は最もpythonicの方法を使用して見つけます。しかし、もちろん、私は意見の相違を受け入れます。;)
@AniMenonに触発されて、より一般的なpythonicソリューションを作成しました。
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
format
メソッドのみを使用します。の痕跡はstr
なく、要素フォーマットの微調整が可能です。たとえば、リストの要素として浮動小数点数を使用している場合は、変換指定子を追加することで形式を調整できます。この場合は:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
出力はかなりまともです:
[1.85, -6.33, 4000.21]
print(["Sam"])
の通話repr("Sam")
に戻り、'Sam'
あなたが呼び出すとは異なり、(引用符付き)、print("Sam")
およびPythonのコールのstr("Sam")
リターンSam
(引用符なし)。詳細についてはstr
、およびrepr
またはPythonstr
とlist
sの違いを参照してください。