Python速習ガイド - ステップ1 基本的な文法とデータ型 (8) - タプル
シリーズ - Python速習ガイド
コンテンツ
Info
- 本講座は、Pythonプログラミングの基礎を手を動かしながら最速で身につけるための講座です。
- 「スタイルガイド」では、Pythonできれいなコードを書くためのガイドライン(PEP8)で紹介されている内容を主に記載しています。
- 各コードは実行して結果を確認することができます。
ページの再読み込みで元の内容に戻りますので、自由にいじってみてください。
「ステップ1 基本的な文法とデータ型」の続きです。
1.5. データをまとめる
1.5.2. タプル
データをまとめるデータ型として、リストの他にも タプル (tuple
) があります。
タプルはリストとは異なり、一度作成すると要素を変更できない(イミュータブル)という重要な特徴があります。
タプルの作成方法
- タプルは丸括弧(
(
,)
)内に要素をカンマ(,
)区切りで並べて作成します。
- 要素が1つだけのタプルを作成する場合は、要素の後ろにカンマ(
,
)をつける必要があります。
- 丸括弧は省略することもできます。
- 空のタプルは
()
で作成します。
タプルの性質:イミュータブル(変更不可)
タプルの最も重要な特徴は イミュータブル(変更不可) であることです。
一度作成したタプルの要素は変更、追加、削除できません。
- タプル自体はイミュータブルですが、タプル内に格納された変更可能(ミュータブル)なオブジェクトの内容は変更可能であることに注意してください。
- これまでに登場したデータ型のうち、ミュータブルな型はリストのみです。
タプルの基本的な操作
タプルはリストと同様に以下の操作ができます:
- インデックスによる要素取得
tuple[0]
- 長さの取得
len(tuple)
- 存在チェック
x in tuple
- スライス
tuple[1:3]
- アンパック
x, y = tuple
タプルのメソッド
タプルはイミュータブルなため、リストと比べてメソッドが少なく、要素を変更するメソッドはありません。
- 位置番号取得
tuple.index(x)
- 個数取得
tuple.count(x)
タプルとリストの相互変換
- タプルは
list
関数を使ってリストに変換できます。 - リストは
tuple
関数を使ってタプルに変換できます。
タプルに適用可能な関数
タプルはリストと同様に以下の関数が適用可能です:
min(tuple)
、max(tuple)
:最小値、最大値の取得sum(tuple)
:数値の合計を計算sorted(tuple)
:要素をソートした結果をリストとして返すall(tuple)
,any(tuple)
: タプル内の真偽値をチェック
sorted
関数の戻り値がリストであることに注意が必要です。
(タプルが欲しい場合はtuple
関数で変換します。)
タプルとリストの使い分け
タプルとリストはどちらも複数の要素をまとめるデータ型ですが、それぞれ異なる特性と用途があります。
-
タプル を使うのが適切な場合:
- 作成後に変更する予定がないデータ (例: 座標、曜日名のセット)
- データの不変性を保証したい場合
- 辞書のキーとして使用する場合 (後で学習します)
-
リスト を使うのが適切な場合:
- 要素の追加、削除、変更がある場合
- データが動的に変化する場合
タプルとリストのパフォーマンス
タプルはイミュータブルなため、リストよりもメモリ使用量が少なく、処理が高速になる場合があります。
変更の必要のないデータ構造では、タプルを使用しましょう。
変更の必要のないデータ構造では、タプルを使用しましょう。
bool
関数による型変換
- リストと同様に、タプルに
bool
関数を適用すると、空のタプル(()
)の場合にFalse
、それ以外にTrue
を返します。
タプルのまとめ
ここまで見てきたタプルに関する操作について、練習問題を解いてみましょう。
📚練習問題1: タプルの基本操作
RGB(赤、緑、青)の色情報を表すタプルを操作するプログラムを作成しましょう。
- RGB値
(255, 0, 0)
(赤色)を表すタプルred
を作成してください - RGB値
(0, 255, 0)
(緑色)を表すタプルgreen
を作成してください - RGB値
(0, 0, 255)
(青色)を表すタプルblue
を作成してください - 3つの色から成るタプル
primary_colors
を作成してください primary_colors
の2番目の要素(緑色)を表示してくださいblue
タプルの青の値(最後の要素)を取得して表示してくださいprimary_colors
の長さを表示してください
解答例
📚練習問題2: タプルとリストの変換
週の曜日を表すタプルを作成し、それをさまざまな方法で操作してみましょう。
- 月曜から日曜までの曜日名(英語)をタプル
weekdays
に格納してください - 土曜と日曜だけを含む
weekend
タプルを作成してください(インデックス指定でweekdaysから抽出) weekdays
をリストに変換し、weekdays_list
変数に格納してくださいweekdays_list
に「Holiday」という要素を追加してくださいweekdays_list
をタプルに戻し、new_weekdays
変数に格納してください- 元の
weekdays
と新しいnew_weekdays
の長さをそれぞれ表示してください
解答例
📚練習問題3: タプルのアンパック
大学生の情報(学生番号、名前、学年、専攻)が格納されたタプルから、必要な情報を抽出してみましょう。
- 学生情報として
(12345, "山田太郎", 3, "情報科学")
を格納したタプルstudent
を作成してください - アンパックを使って学生番号、名前、学年、専攻をそれぞれ別々の変数に代入してください
- アンパックを使って学生番号、名前とその他の情報を分離してください
- 学生の名前と専攻だけを取り出し、学生番号と学年は無視するようなアンパックを行ってください
- 取り出した情報をそれぞれ表示してください