【Python】join()でリスト(List)の要素を一つの文字列に連結する!
Pythonでリスト(List)の要素を一つの文字列に連結するにはjoin()を使用します。
join()とはリストなどの要素、文字列や数値、pathなどを結合することができる関数であり、リスト(List)の要素を一つの文字列として表示することができます。
しかし、数値が入ったリストの場合、join()では連結することができませんので注意してください。
また、多次元リストの要素もまとめて一つの文字列に連結することができますのでリストの要素を連結したい場合はjoin()関数を使用しましょう。
今回はPythonのjoin()でリスト(List)の要素を一つの文字列に連結する方法について以下の内容で解説していきます。
⚫︎ リストの要素が文字列である場合
⚫︎ リストの要素が数値である場合
⚫︎ リストの要素が文字列と数値である場合
⚫︎ 2次元リスト(list)の要素を一つの文字列に連結する場合
⚫︎ 3次元リスト(list)の要素を一つの文字列に連結する場合
目次
join()とは
join()とはリストなどの要素、文字列や数値、pathなどを結合することができる関数になります。
例えば、今回だとリストの中身だけをくっつけて、一つの文字列として出力させたり、区切る文字を設定して一つの文字列として出力させたりすることができます。
リスト(List)の要素を一つの文字列に連結するサンプルコード
リスト(list)の要素を一つの文字列に連結するサンプルコードを紹介します。
リストの要素が文字列である場合
リストの要素が文字列である場合、join()関数は要素を一つの文字列に連結するようになります。
例
1 2 3 4 5 6 |
name = ['ローソン', 'セブンイレブン', 'ファミリーマート', 'ミニストップ', 'デイリーヤマザキ', 'セイコーマート', '100円ローソン'] print(name) print('・join()で要素を結合') name1 = '#'.join(name) print(name1) |
出力結果
[‘ローソン’, ‘セブンイレブン’, ‘ファミリーマート’, ‘ミニストップ’, ‘デイリーヤマザキ’, ‘セイコーマート’, ‘100円ローソン’]
・join()で要素を結合
ローソン#セブンイレブン#ファミリーマート#ミニストップ#デイリーヤマザキ#セイコーマート#100円ローソン
join()関数によって要素を一つの文字列に連結することができます。
その為、nameに格納されている要素が「#」を境目に文字列として表示されています。
リストの要素が数値である場合
リストの要素が数値である場合、join()関数は要素を一つの文字列に連結することができません。
例
1 2 3 4 5 6 7 |
num = list(range(10)) print(num) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print('・join()で要素を結合') nunm1 = '#'.join(num) print(num1) |
出力結果
TypeError: sequence item 0: expected str instance, int found
「数値型が見つかりました」というエラーが発生しています。
リストの要素が文字列と数値である場合
リストの要素が文字列と数値である場合も、join()関数は要素を一つの文字列に連結することができません。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
name = ['ローソン', 'セブンイレブン', 'ファミリーマート', 'ミニストップ', 'デイリーヤマザキ', 'セイコーマート', '100円ローソン'] print(name) #['ローソン', 'セブンイレブン', 'ファミリーマート', 'ミニストップ', 'デイリーヤマザキ', 'セイコーマート', '100円ローソン'] num = list(range(10)) print(num) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] mix = name + num print(mix) #['ローソン', 'セブンイレブン', 'ファミリーマート', 'ミニストップ', 'デイリーヤマザキ', 'セイコーマート', '100円ローソン', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print('・join()で要素を結合') mix1 = '#'.join(mix) print(mix1) |
出力結果
TypeError: sequence item 0: expected str instance, int found
こちらも同様に「数値型が見つかりました」というエラーが発生しています。
多次元リスト(List)の要素を一つの文字列に連結するサンプルコード
先ほどは1次元リストの要素を一つの文字列に連結するサンプルコードを紹介しましたが、次は多次元リスト(list)の要素を一つの文字列に連結するサンプルコードを紹介します。
2次元リスト(list)の要素を一つの文字列に連結する場合
2次元リスト(list)の要素を一つの文字列に連結してみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
name_str = '' name = [ ['ローソン', 'セブンイレブン', 'ファミリーマート'], ['ミニストップ', 'デイリーヤマザキ', 'セイコーマート', '100円ローソン'] ] print(name) print('・join()で要素を結合') for i in range(2): name_strI = '#'.join(name[i]) name_str = name_str + name_strI print(name_str) |
出力結果
[[‘ローソン’, ‘セブンイレブン’, ‘ファミリーマート’], [‘ミニストップ’, ‘デイリーヤマザキ’, ‘セイコーマート’, ‘100円ローソン’]]
・join()で要素を結合
ローソン#セブンイレブン#ファミリーマートミニストップ#デイリーヤマザキ#セイコーマート#100円ローソン
join()関数によって2次元リストの要素を一つの文字列に連結しています。
また、下記のように記述することでも一つの文字列に連結することができますが、2次元リストの要素が10個ぐらいになってくるとコードが長くなってしまいます。
例
1 |
name_str = '#'.join(name[0]) + '#'.join(name[1]) |
その為、今回はrange()関数でリストのインデックスの範囲を設定しています。
3次元リスト(list)の要素を一つの文字列に連結する場合
3次元リスト(list)の要素を一つの文字列に連結してみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
name_str = '' name = [ [['ローソン', 'セブンイレブン', 'ファミリーマート'],['ミニストップ', 'デイリーヤマザキ', '100円ローソン']], [['セイコーマート', 'ポプラ', 'Cマート'],['ベルマート', 'リトルスター', 'Rショップ']] ] print(name) print('・join()で要素を結合') for i in range(2): for j in range(2): name_strI = '#'.join(name[i][j]) name_str = name_str + name_strI print(name_str) |
出力結果
[[[‘ローソン’, ‘セブンイレブン’, ‘ファミリーマート’], [‘ミニストップ’, ‘デイリーヤマザキ’, ‘100円ローソン’]], [[‘セイコーマート’, ‘ポプラ’, ‘Cマート’], [‘ベルマート’, ‘リトルスター’, ‘Rショップ’]]]
・join()で要素を結合
ローソン#セブンイレブン#ファミリーマートミニストップ#デイリーヤマザキ#100円ローソンセイコーマート#ポプラ#Cマートベルマート#リトルスター#Rショップ
join()関数によって3次元リストの要素を一つの文字列に連結しています。
こちらも、下記のように記述することでも一つの文字列に連結することができますが、要素が10個ぐらいになってくるとコードが長くなってしまうので、range()関数でリストのインデックスの範囲を設定しています。
例
1 |
name_str = '#'.join(name[0][0]) + '#'.join(name[0][1] + '#'.join(name[1][0]) + '#'.join(name[1][1]) |
今回のポイント
join()でリスト(list)の要素を一つの文字列に連結
⚫︎ リスト(List)の要素を一つの文字列に連結するにはjoin()関数を使用する
⚫︎ リストの要素が文字列である場合は要素を連結して一つの文字列として表示する
⚫︎ リストの要素が数値である場合は要素を連結して一つの文字列として表示することができない
⚫︎ リストの要素が文字列と数値である場合も要素を連結して一つの文字列として表示することができない
⚫︎ join()関数は多次元リストでも要素を連結して一つの文字列として表示することができる
(インデックスはrange()関数を使用すると良い)
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。