Pythonで文字列リストを連結する:join()メソッドの使い方と数値を含む場合の対処法

Pythonでリストに格納された複数の文字列を、ひとつの文字列として結合したい場面は頻繁に発生します。例えば、CSVデータを作成するためにカンマで区切って結合したり、単語のリストをスペースで繋いで文章にしたりする場合です。

このような処理には、文字列型のメソッドである join() を使用します。+ 演算子を使ってループで結合する方法もありますが、join() を使う方がパフォーマンス(処理速度)の面で圧倒的に有利であり、コードも簡潔になります。

この記事では、join() メソッドの基本的な使い方と、リスト内に数値が含まれる場合の注意点について解説します。

目次

join() メソッドの基本構文

join() メソッドは、リストではなく**「区切り文字(セパレータ)」**に対して呼び出します。これが初心者にとって少し直感的でない部分かもしれません。

構文:

"区切り文字".join(リストなどのイテラブル)

引数として渡されたリストの各要素の間に、指定した区切り文字を挟んで連結します。

具体的な使用例

1. スペースや記号で連結する

単語のリストをスペースで繋いで文章にしたり、ハイフンで繋いでIDを作成したりする例です。

# 単語のリスト
word_list = ["Python", "is", "very", "useful"]

# 半角スペースで連結
sentence = " ".join(word_list)

print(f"元のリスト: {word_list}")
print(f"連結結果: {sentence}")

# ハイフンで連結
id_parts = ["user", "001", "tokyo"]
user_id = "-".join(id_parts)

print(f"ID: {user_id}")

実行結果:

元のリスト: ['Python', 'is', 'very', 'useful']
連結結果: Python is very useful
ID: user-001-tokyo

2. 区切り文字なしで連結する(空文字)

リストの要素を隙間なく結合したい場合は、空文字列 "" に対して join() を呼び出します。

# 文字のリスト
char_list = ["P", "r", "o", "g", "r", "a", "m"]

# そのまま連結
combined_text = "".join(char_list)

print(f"結合後: {combined_text}")

実行結果:

結合後: Program

3. カンマで連結する(CSV形式)

データ分析などでよく使われるCSV(カンマ区切り)形式の文字列を作成する例です。

# CSVの1行分となるデータ
csv_row_data = ["2025-12-01", "Item-A", "In Stock"]

# カンマで連結
csv_line = ",".join(csv_row_data)

print(f"CSV行: {csv_line}")

実行結果:

CSV行: 2025-12-01,Item-A,In Stock

注意点:リストに数値が含まれる場合 (TypeError)

join() メソッドの引数となるリストは、**すべての要素が文字列(str)**でなければなりません。もし整数(int)などが含まれていると TypeError が発生します。

# 数値が含まれるリスト
number_list = [10, 20, 30]

# エラーになる例
# result = ",".join(number_list)
# TypeError: sequence item 0: expected str instance, int found

対処法:map() 関数で文字列に変換する

数値リストを連結したい場合は、map() 関数を使って全ての要素を str 型に変換してから join() に渡します。

# 数値リスト
scores = [98, 75, 80, 100]

# map(str, scores) で各要素を文字列に変換してから連結
score_csv = ",".join(map(str, scores))

print(f"スコアCSV: {score_csv}")

実行結果:

スコアCSV: 98,75,80,100

リスト内包表記 [str(x) for x in scores] を使う方法もありますが、単に変換するだけであれば map() の方が記述が簡潔で、メモリ効率も良くなります。

まとめ

  • 文字列リストを連結するには "区切り文字".join(リスト) を使用します。
  • + 演算子のループよりも高速で効率的です。
  • 区切り文字なしで結合する場合は "".join(リスト) とします。
  • リスト内に数値が含まれる場合は map(str, リスト) を使って文字列に変換する必要があります。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次