3

だから、リストを文字列に変換する最も「pythonic」な方法は何だろうと思っています。

例えば:

string_list = ['h', 'e', 'l', 'l', 'o']
# to the string
string = 'hello'

私はこの''.join(string_list)方法を使用してきましたが、非常に単純なことを行うには、判読できず、迂遠な方法に近いと感じています。

より良い方法はありますか、またはこれを過度に複雑にしていますか?

4

3 に答える 3

5

いいえ、それはそれを行うためのpythonicな方法です。

多分あなたはそれが読むべきだと感じるでしょう:string_list.join('')。あなたは一人ではありません

おそらく最も重要な利点は、これにより 反復可能.join()ものすべてを処理できることです。

逆の場合は、各コレクションが独自にjoin()メソッドを実装する必要があります。独自のコレクションを作成する場合、.join()メソッドを追加しますか?おそらくそうではありません。

strそれがクラスのメソッドであるという事実は、それが常に機能することを意味します。驚きはありません。Pythonと、著者のArminRonacherjoin()による驚き最小の原則などについてここで読んでください。Flask

関数/演算子についても同様の議論をすることができlen()ます。これは、前述の記事の冒頭にあります。

于 2012-08-05T13:21:04.727 に答える
4

を使用し''.join(string_list)ます。組み込み型に名前を付けることに注意してくださいlist。そのため、変数名には使用しないでください。Python 文字列は不変であるため、関係なく新しい文字列を作成する必要があります。''.join(s)Python でこれを行う標準的で効率的な方法です。

于 2012-08-05T13:11:54.160 に答える
2

複雑にしすぎていると思います。これはpython自体からのものです:

>>> list = ['h', 'e', 'l', 'l', 'o']
>>> sum(list, '')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sum() can't sum strings [use ''.join(seq) instead]

したがって、python の推奨は を使用すること''.joinです。

于 2012-08-05T13:09:35.543 に答える