13

私はpythonが初めてで、これは私のPCで何かを自動化するためのものです。リスト内のすべてのアイテムを連結したい。問題はそれです

''.join(list)

文字列のリストではないため、機能しません。

このサイトhttp://www.skymind.com/~ocrow/python_string/は、それを行う最も効率的な方法は

''.join([`num` for num in xrange(loop_count)])

しかし、それは有効なpythonではありません...

この種のループをstring.join()に含めるための正しい構文を誰かが説明できますか?

4

4 に答える 4

19

str()コンストラクターを使用して、リスト内のすべてを文字列に変換する必要があります。

''.join(str(elem) for elem in lst)

通常list、変数名に使用するのはお勧めできないことに注意してください。組み込みのlistコンストラクターを隠してしまいます。

そこでジェネレーター式を使用str()して、リスト内のすべての要素にコンストラクターを適用しました。別の方法は、次のmap()関数を使用することです。

''.join(map(str, lst))

あなたの例のバックティックは、値を呼び出す別のスペルであり、 ;repr()とは微妙に異なります。str()おそらく後者が必要です。これは、Python の原則である「それを行うための明白な方法は 1 つ、できれば 1 つだけである必要がある」に違反しているためです。、バッククォート構文は Python 3 から削除されました。

于 2012-08-15T10:14:26.820 に答える
6

別の方法を次に示します (議論は Python 2.x に関するものです)。

''.join(map(str, my_list))

このソリューションは最速のパフォーマンスを発揮し、見栄えがよくシンプルです。ジェネレーターを使用しても、より効率的ではありません。実際、これはより効率的''.joinです。要素の長さに基づいて文字列に正確な量のメモリを割り当てる必要があるため、文字列を作成する前にジェネレーター全体を消費する必要があります。

Python 3 で削除されていることに注意してください。``これを使用することはお勧めできません。必要に応じて使用してより明示的にしてstr()ください。str(num).

于 2012-08-15T10:15:00.050 に答える
2

Python が「リスト内包表記」(奇妙な[x for x in ...]構文) には古すぎる場合は、次を使用しますmap()

 ''.join(map(str, list))
于 2012-08-15T10:15:41.370 に答える
2

これを使用するだけで、使用する必要は[]ありませんstr(num)

''.join(str(num) for num in xrange(loop_count))  

xrange(loop_count)リストの場合は、リスト名に置き換えてください。

例:

   >>> ''.join(str(num) for num in xrange(10)) #use range() in python 3.x
    '0123456789'
于 2012-08-15T10:13:37.980 に答える