【レッスン4-09】タプルの基本操作をマスターしよう|splitとjoinの実例付き|Pythonデータ構造

ながみえ

一つ前のLessonでは4種類のデータ構造について学習しました。

今回はタプルの基本について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数とスコープ編

Lesson4:データ構造編
・Lesson4-1:リストの定義と要素の追加を理解しよう
・Lesson4-2:リストの要素を削除しよう
・Lesson4-3:リストの情報を調べよう
・Lesson4-4:リストの集計・並べ替えを理解しよう
・Lesson4-5:リストのスライスを理解しよう
・Lesson4-6:リストのループ処理を理解しよう
・Lesson4-7:リストの内包表記を理解しよう
・Lesson4-8:リスト・タプル・辞書・集合の概要と違いを理解しよう
・Lesson4-9:タプルの基本を理解しよう ◁今回はココ
・Lesson4-10:タプルのアンパックを理解しよう
・Lesson4-11:辞書の基本を理解しよう
・Lesson4-12:辞書のループ処理を理解しよう
・Lesson4-13:辞書の内包表記を使ってリストから辞書を作ろう
・Lesson4-13:集合(セット)の基本を理解しよう
・練習問題4-1:宝探しゲームを作ろう
・練習問題4-2:ナインゲームを作ろう 
・練習問題4-3:マルバツゲームを作ろう
Lesson5:オブジェクト指向編
次のステップ:Pythonを用いたアプリ開発

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson4-8 データ構造の違いを理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson4-10 タプルのアンパックとネストを理解しよう

タプルとは?Pythonでの定義と利用シーン

ここからタプルの説明に入ります。

ページ下部にはこのページで出てくる用語の意味をまとめた 用語集 もありますので、分からない言葉が出てきたらそちらも参考にしてください。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

タプルはPythonにおけるコレクション型のデータ構造の一つです。

リストと似ていますが、最大の違いは イミュータブル(変更不可)であることです。つまり一度作成されたタプルの要素を追加、削除、変更することはできません。

この性質により、タプルは固定されたデータの集まりを保持するのに適しています。

タプルの作成方法|丸括弧とカンマで定義

タプルは 丸括弧 () を使って定義します。複数の要素をカンマで区切りながら括弧内に列挙するだけです。

以下はタプルの定義例です。

# タプルの定義
fruits = ("apple", "banana", "cherry")
print(fruits)  # ('apple', 'banana', 'cherry')

要素が1つだけのタプルを定義する場合でも、カンマを付ける必要があります。

# 要素が1つのタプル
single_element_tuple = ("apple",)
print(single_element_tuple)  # ('apple',)

タプルの特性とリストとの違い

タプルとリストの主な違いは、前述した通りタプルがイミュータブルである点です。

リストはミュータブル(変更可能)なため、要素の追加や削除が自由に行えますが、タプルはそうではありません。

このためプログラム内で変更する必要のないデータや、意図せずにデータが変更されるのを防ぎたい場合にタプルが使われます。

データ構造要素の変更要素の追加・削除定義方法
リストミュータブル[]
タプルイミュータブル不可()

タプルの基本操作|使用できる関数やメソッド

タプルで使える基本的な操作はリストとほぼ同様です。

例えばlen() 関数やcountメソッド、indexメソッドでタプルの情報を取得したり、in 演算子で要素が存在するかを確認したりすることができます。

これらについてはリストの解説で詳しく学んでいるため、ここでは詳細な説明を割愛します。

復習する場合は以下の記事を参照してください↓↓

あわせて読みたい
【レッスン4-03】リストサイズや要素検索のための情報出力テクニック|Pythonデータ構造
【レッスン4-03】リストサイズや要素検索のための情報出力テクニック|Pythonデータ構造

文字列、リスト、タプルの相互変換方法|splitとtupleとjoin

文字列とリストやタプルは、特定の関数やメソッドを使用して相互に変換することができます。

それぞれの役割と使い方を以下で詳しく説明します。

split()メソッドによる文字列のリスト化

split()メソッドは、文字列を指定した区切り文字で分割してリストに変換するメソッドです。

例えば、カンマ区切りの文字列をリストに変換する場合に使います。

# 文字列をリストに分割
fruits_str = "apple, banana, cherry" # 3つの単語を含んだ一つの文字列
fruits_list = fruits_str.split(", ") # split()メソッドで、fruits_strを「, 」で区切ってリスト化
print(fruits_list)  # ['apple', 'banana', 'cherry']

上記の例では、文字列 "apple, banana, cherry" をカンマとスペースで分割し、リスト ['apple', 'banana', 'cherry'] に変換しています。

tuple()関数による文字列やリストのタプル化

tuple()関数は文字列やリストをタプルに変換するメソッドです。

文字列なら文字毎に、リストなら要素毎にタプルの要素として格納します。

# 文字列やリストをタプルに変換
apple_str = "apple"					 # 5つの文字を含んだ文字列
fruits_str = "apple, banana, cherry" # 3つの単語を含んだ一つの文字列

apple_tuple = tuple(apple_str)
fruits_tuple = tuple(fruits_str.split(", ")) # split()メソッドでリスト化し、それをtuple()関数でタプル化

print(apple_tuple)  # ('a', 'p', 'p', 'l', 'e',)
print(fruits_tuple) # ('apple', 'banana', 'cherry')

この例では、文字列 "apple" を5の文字で分割してタプル化し、またリスト ['apple', 'banana', 'cherry'] 作成後にそれをタプル化しています。

join()メソッドによるリストやタプルの文字列化

join()メソッドはリストやタプルの各要素を指定した文字で連結し、1つの文字列にするメソッドです。

例えば、リストやタプルの要素をカンマ区切りの文字列に変換したいときに便利です。

# タプルを文字列に変換
fruits_tuple = ("apple", "banana", "cherry") # 3つの要素を含んだタプル
fruits_str = ", ".join(fruits_tuple)		 # join()メソッドで、fruits_strを「, 」で連結して文字列化
print(fruits_str)  # 'apple, banana, cherry'

この例ではタプル ("apple", "banana", "cherry") の各要素をカンマとスペースで連結し、1つの文字列 'apple, banana, cherry' に変換しています。

まとめ

タプルは変更する必要のないデータを扱う場合に適したコレクション型です。

リストと似た操作ができ、要素数を調べたり、特定の要素が存在するか確認することも可能です。またsplitjoin によって文字列との相互変換もできます。

タプルを正しく理解して適切な場面で使うことで、Pythonプログラムの安定性や安全性を向上させることができます。

練習問題:国名を使ったタプルと文字列の変換を体験しよう

【Python】勉強猫がノートパソコンに向かい、練習問題に挑戦する様子。記事内の休憩用イラスト

タプルを使って国名を扱うプログラムを作成しましょう。

最初にいくつかの国名を含むタプルを定義します。その後、タプルをカンマで区切った文字列に変換し、再びタプルに戻す操作を行ってください。

問題の詳細条件

以下の要件に従ってコードを完成させてください。

  • 3つの国名を含むタプル countries を定義すること。
  • タプルを join メソッドを使ってカンマ区切りの文字列に変換し、それを表示すること。
  • 変換した文字列を split メソッドを使ってリストに分割し、それを表示すること。
  • 分割したリストを tuple 関数を使って再びタプルに変換し、それを表示すること。

ただし、以下のような実行結果となるコードを書くこと。

タプルの内容: ('Japan', 'USA', 'France')
タプルを文字列に変換: Japan, USA, France
文字列をリストに分割: ['Japan', 'USA', 'France']
リストをタプルに戻す: ('Japan', 'USA', 'France')

【ヒント】難しいと感じる人だけ見よう

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:タプルcountriesの定義
2:printでタプルcountriesの内容を出力
3:joinメソッドを使ってタプルをカンマ区切りの文字列に変換し、変数countries_strに代入
4:printでタプルを文字列に変換した結果を出力
5:splitメソッドを使って文字列をリストに分割し、変数countries_listに代入
6:printで文字列をリストに分割した結果を出力
7:tuple関数を使ってリストを再びタプルに変換し、変数countries_tuple_againに代入
8:printでリストをタプルに戻した結果を出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# タプルを使ったPythonプログラム
# タプルを定義します。ここでは国名のリストをタプルとして扱います。
"""
【穴埋め問題1】
ここに3つの国名を含むタプルを定義するコードを書いてください。
"""

# タプルの内容を表示します
print("タプルの内容:", countries)

# joinメソッドを使って、タプルの要素をカンマ区切りの文字列に変換します
"""
【穴埋め問題2】
ここにjoinメソッドを使ってタプルを文字列に変換し、変数に代入するコードを書いてください。
"""

print("タプルを文字列に変換:", countries_str)

# splitメソッドを使って、文字列を再びリストに分割します
"""
【穴埋め問題3】
ここにsplitメソッドを使って文字列をリストに変換し、変数に代入するコードを書いてください。
"""

print("文字列をリストに分割:", countries_list)

# 文字列をタプルに再変換
"""
【穴埋め問題4】
ここにtuple関数を使ってリストをタプルに戻し、変数に代入するコードを書いてください。
"""

print("リストをタプルに戻す:", countries_tuple_again)

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

問題の答え合わせと解説

この問題の一つの正解例とそのコードの解説を以下に示します。

一つの正解例

例えば以下のようなプログラムが考えられます。

Q
正解コード
# タプルを使ったPythonプログラム
# タプルを定義します。ここでは国名のリストをタプルとして扱います。
countries = ("Japan", "USA", "France")

# タプルの内容を表示します
print("タプルの内容:", countries)

# joinメソッドを使って、タプルの要素をカンマ区切りの文字列に変換します
# joinはリストやタプルの要素を連結して一つの文字列にするメソッドです
countries_str = ", ".join(countries)
print("タプルを文字列に変換:", countries_str)

# splitメソッドを使って、文字列を再びリストに変換します
# splitは指定した区切り文字で文字列を分割するメソッドです
countries_list = countries_str.split(", ")
print("文字列をリストに分割:", countries_list)

# 文字列をタプルに再変換
# tuple関数を使って、リストをタプルに戻します
countries_tuple_again = tuple(countries_list)
print("リストをタプルに戻す:", countries_tuple_again)

正解例の詳細解説

このプログラムではPythonのタプル(変更不可のデータ構造)を使って国名を扱う方法を学びます。

タプルの定義方法、基本的な操作、タプルと文字列の相互変換について詳しく解説します。

Q
詳細解説

タプルの定義

countries = ("Japan", "USA", "France")

ここでは3つの国名をタプルとして定義しています。

タプルを使用することでプログラム内で変更しないデータを安全に管理することができます。

タプルの内容を表示

print("タプルの内容:", countries)

print 関数を使ってタプルに含まれている要素を表示しています。

この例では「Japan」、「USA」、「France」という3つの国名が表示されます。

タプルを文字列に変換(joinメソッド)

countries_str = ", ".join(countries)

ここではjoin メソッドを使ってタプルの要素を1つの文字列に変換しています。

join メソッドはリストやタプルなどのコレクションの要素を特定の文字(ここではカンマとスペース)で結合して1つの文字列にします。

この結果、countries_str には「Japan, USA, France」という文字列が格納されます。

文字列をリストに分割(splitメソッド)

countries_list = countries_str.split(", ")

split メソッドを使って、文字列をリストに分割しています。

ここではカンマとスペースを区切り文字として、文字列を3つの要素に分割しています。この結果、「Japan」、「USA」、「France」がリストの要素となります。

リストをタプルに戻す

countries_tuple_again = tuple(countries_list)

tuple 関数を使ってリストを再びタプルに変換します。

これにより分割してリストになったデータを元のタプルに戻すことができます。ここでのポイントは、リストやタプルは相互に変換が可能で、データを適切にフォーマットする際に便利な操作であるという点です。

まとめ

このプログラムではPythonのタプルを定義し、その基本操作を学びました。

またタプルと文字列の相互変換方法(joinsplit メソッド)についても理解できたと思います。

タプルは変更が不要なデータを扱う際に便利なデータ構造であり、リストや文字列と柔軟に連携できることがわかりました。

これらの操作を通じて、タプルの実用的な使い方を学び、プログラムの安全性や効率性を向上させることができるでしょう。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPython学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson4-8 データ構造の違いを理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson4-10 タプルのアンパックとネストを理解しよう

Python用語集|タプル編

今回の記事で出てきた用語・関数などを一覧で紹介します。

このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。

Python用語定義・使い方の概要解説記事へのリンク
リスト順序付きで複数の要素を保持できるデータ構造。変更可能なミュータブル型Lesson4-1
タプルリストに似たシーケンス型で、要素の変更ができないイミュータブル型本記事
ミュータブル作成後に内容を変更できるデータ型。リストや辞書などが該当本記事
イミュータブル作成後に内容を変更できないデータ型。数値型、文字列型、タプルなどが該当本記事
split() メソッド文字列を指定した区切り文字で分割し、リストとして返すメソッド本記事
tuple() 関数他のイテラブル(リストなど)をタプルに変換する関数本記事
join() メソッドリストなどの複数の文字列を、指定した区切り文字で連結して1つの文字列にするメソッド本記事

FAQ|Pythonタプルの基本と文字列変換

Q
Q1. タプルを使うメリットは何ですか?

タプルはイミュータブル(変更不可)なため、安全性とパフォーマンスに優れています。変更が不要な固定データを扱うときに適しています。

Q
Q2. split()とjoin()の違いは何ですか?

split()は文字列を指定した区切りで分割しリストに変換、join()はリストなどの要素を文字列に連結します。タプルとは直接関係ありませんが、型変換を組み合わせて連携可能です。

Q
Q3. タプル内に文字列がある場合、joinで連結できますか?

はい、タプルの要素がすべて文字列であれば、join()を使って1つの文字列に結合できます。ただし要素に数値があるとエラーになるため、型変換が必要です。

記事URLをコピーしました