文字列連結は、リスト結合よりも Python バイトコードが少ないようです。
これは一例です。
test.py:
a = ''.join(['a', 'b', 'c'])
b = 'a' + 'b' + 'c'
次に、実行しpython -m dis test.py
ます。次のpythonバイトコードを取得しました(python 2.7):
1 0 LOAD_CONST 0 ('') 3 LOAD_ATTR 0 (結合) 6 LOAD_CONST 1 ('a') 9 LOAD_CONST 2 ('b') 12 LOAD_CONST 3 ('c') 15 BUILD_LIST 3 18 CALL_FUNCTION 1 21 STORE_NAME 1 (ア) 3 24 LOAD_CONST 6 ('abc') 27 STORE_NAME 2 (ロ) 30 LOAD_CONST 4 (なし) 33 戻り値
明らかに、文字列連結のバイトコード数は少なくなります。文字列'abc'
を直接ロードするだけです。
リスト結合の方がはるかに優れていると常に言う理由を誰か説明できますか?