これはいつも私を混乱させています。この方がすっきりするような気がします。
my_list = ["Hello", "world"]
print(my_list.join("-"))
# Produce: "Hello-world"
これよりも。
my_list = ["Hello", "world"]
print("-".join(my_list))
# Produce: "Hello-world"
このようになるのは何か特別な理由があるのでしょうか?
join()`メソッドがリストクラスではなく、ストリングクラスにあるから?
確かにおかしいですね。
http://www.faqs.org/docs/diveintopython/odbchelper_join.html をご覧ください。
歴史的なメモ. 私が初めてPythonを学んだとき 私が初めてPythonを学んだとき、joinはリストのメソッドだと思っていました。 区切り文字を引数に取るリストの 区切り文字を引数に取るリストのメソッドだと思っていました。多くの 多くの人が同じように感じています。 joinメソッドの裏にはストーリーがあります。前 Python 1.6以前の文字列には、このような便利なメソッドはありませんでした。 このような便利なメソッドはありませんでした。文字列は すべての文字列関数を含む別の文字列モジュールがありました。 すべての文字列関数が含まれていました。 関数は最初の引数として文字列を受け取ります。 各関数は最初の引数として文字列を受け取ります。これらの関数は 関数は、文字列そのものに搭載するほど重要であると 文字列の上に置くほど重要な関数と考えられました。 下位、上位、分割のような関数は splitのような関数には意味がありました。しかし、多くの筋金入りのPython のプログラマの多くは、この新しい結合 メソッドに異議を唱えました。 メソッドであるべきだ、あるいは あるいは、全く移動せず、単に古い文字列モジュール(これは 古い文字列モジュールの一部であるべきだと主張しました。 私は新しいjoinメソッドだけを使っています。) 私はもっぱら新しいjoinメソッドを使っています。 しかし、どちらかの方法で書かれたコードを見ることになるでしょう。 どうしても気になる場合は、古いstring.joinを使うこともできます。 古いstring.join関数を使うこともできます。 の代わりに使うことができます。
--- Mark Pilgrim, Dive into Python