🐍 Python

str.join(iterable)

リストなどの各要素を、指定した区切り文字でつないで1つの文字列にするメソッドです。呼び出す主体が「区切り文字の側」であることが直感に反しやすく、AIが生成したコードでもlist.join(sep)のように逆に書かれた誤りを見抜けると役立ちます。

構文: sep.join(iterable)
戻り値: iterableの各要素をsepでつないだ1つの文字列

基本の使い方

区切り文字の文字列に対して.join()を呼び、引数にリストを渡します。str.split()とちょうど逆の操作になります。

words = ["Docker", "Kubernetes", "Linux"]
print(", ".join(words))  # 'Docker, Kubernetes, Linux'

区切り文字を空文字列にすると単純結合になる

区切り文字に空文字列""を使うと、間に何も挟まずそのまま連結します。

print("".join(["A", "B", "C"]))  # 'ABC'

数値のリストを渡すとTypeErrorになる

str.join()は要素がすべて文字列であることを前提にしています。数値のリストをそのまま渡すと、要素を暗黙に文字列変換してはくれずTypeErrorになります。AIが生成したコードで数値と文字列が混在するリストをjoinしている箇所は、実行前に疑ってよいポイントです。

try:
    print(",".join([1, 2, 3]))
except TypeError as e:
    print("TypeError:", e)
# TypeError: sequence item 0: expected str instance, int found

mapで文字列に変換してから渡す

数値のリストを結合したい場合は、先にmap(str, ...)で各要素を文字列に変換してからjoinに渡します。

nums = [1, 2, 3]
print(",".join(map(str, nums)))  # '1,2,3'
パラメータ
iterable
結合したい文字列のリスト・タプルなど。要素はすべて文字列である必要がある
💡 AIコードレビュー観点:呼び出し元が区切り文字であることを確認する

", ".join(words)のように、区切り文字の文字列が.join()を呼び出す主体になります。「リストを結合したい」という意図からwords.join(", ")のように逆に書いてしまうミスはAI生成コードでも起こり得るので、動かない場合はまず主語(どちらが呼び出し元か)を確認しましょう。

逆に文字列を分割する方法はstr.splitのページで解説しています。

← Python str クイックリファレンス一覧へ戻る