05-Python

Python(Part.33)| python【タプル(利用編-5)】

python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

(pythonの)「パック」と「アンパック」について理解する。

「パック」と「アンパック」

「パック」は、複数の値をひとまとめにして、タプルを作成することをいいます。

「アンパック」はタプルやリストから各要素を取り出し、別々にすることをいいます。

「パック」と「アンパック」のプログラム

# パックを行っています。
packDate1 = 1, 2, 3, 4, 5
packDate2 = 'a', 'b', 'c', 'd', 'e'
packDate3 = 'あいうえお', 'かきくけこ', 'さしすせそ'

# パックして生成されたタプルを確認しています。
print(packDate1)
print(packDate2)
print(packDate3)

# アンパックを行っています。
data1_1, data1_2, data1_3, data1_4, data1_5 = packDate1
data2_1, data2_2, data2_3, data2_4, data2_5 = packDate2
data3_1, data3_2, data3_3 = packDate3

# アンパックされた各値を確認しています。
print(data1_1, '/' ,data1_2, '/' ,data1_3, '/' ,data1_4, '/' ,data1_5)
print(data2_1, '/' ,data2_2, '/' ,data2_3, '/' ,data2_4, '/' ,data2_5)
print(data3_1, '/' ,data3_2, '/' ,data3_3)

「パック」(タプルを生成)

次のように、カンマで区切られた複数の値を変数に結び付けるとタプルが生成されます。

# パックを行っています。
packDate1 = 1, 2, 3, 4, 5
packDate2 = 'a', 'b', 'c', 'd', 'e'
packDate3 = 'あいうえお', 'かきくけこ', 'さしすせそ'

# パックして生成されたタプルを確認しています。
print(packDate1)
print(packDate2)
print(packDate3)

実行結果

「アンパック」→(タプルやリスト、文字列の値を個々に取得)

次のように、カンマで区切られた変数を利用するとタプルやリストをアンパックできます。

# アンパックを行っています。
data1_1, data1_2, data1_3, data1_4, data1_5 = packDate1
data2_1, data2_2, data2_3, data2_4, data2_5 = packDate2
data3_1, data3_2, data3_3 = packDate3

# アンパックされた各値を確認しています。
print(data1_1, '/' ,data1_2, '/' ,data1_3, '/' ,data1_4, '/' ,data1_5)
print(data2_1, '/' ,data2_2, '/' ,data2_3, '/' ,data2_4, '/' ,data2_5)
print(data3_1, '/' ,data3_2, '/' ,data3_3)

実行結果

ネストされたオブジェクトの「アンパック」

次のように、ネストされたオブジェクトも変数に紐づけてアンパックできます。

# パックを行っています。
packDate1 = 1, 2, (3, 4, 5)

# アンパックを行っています。
data1_1, data1_2, data1_3 = packDate1

print(data1_1, "/", data1_2, "/", data1_3)

実行結果

様々な「アンパック」の方法(アンダースコアの利用)

アンパックで値を取得する場合、取得の仕方によって様々な記述方法があります。

取得する値のうち、不要なものがある場合「_(アンダースコア)」を利用して、取得を行わないようにます。(※実際は「_(アンダースコア)」は変数として利用されるため、値は「_(アンダースコア)」と紐づけられています(取得されています)。ただ、慣例として不要なものを取得する場合、「_(アンダースコア)」を扱うことが多いため、このような、「取得を行わないとする」解説をしています。)

# パックを行っています。
packDate1 = 1, 2, 3, 4, 5

# アンパックを行っています。
data1_1, _, _, data1_4, _ = packDate1

print(data1_1, "/", data1_4)

実行結果

様々な「アンパック」の方法(準備する変数が不足した場合)

アンパックを行うとき、準備する変数が不足するとエラーとなります。

# パックを行っています。
packDate1 = 1, 2, 3, 4, 5

# アンパックを行う場面ですが、受け取り側の変数が足りずエラーとなります。
data1_1,data1_4, = packDate1

print(data1_1, "/", data1_4)

実行結果

様々な「アンパック」の方法(アスタリスクの利用)

アンパックで変数にアスタリスクを付けると、複数の値をリストで取得することができます。但し、アスタリスクを利用できる箇所はひとつだけです。

下のプログラムでは5つの値をもつタプルを3つの変数で受け取っています。この時、受け取る変数の何れかひとつにアスタリスクを付けて取得します。

# パックを行っています。
packDate1 = 1, 2, 3, 4, 5

# アスタリスクを利用してアンパックを行っています。
# 最初の変数にアスタリスクを利用。
*data1_1, data1_2, data1_3 = packDate1

print("最初の変数にアスタリスクを利用。")
print(data1_1, "/", data1_2, "/", data1_3)

# アスタリスクを利用してアンパックを行っています。
# 真ん中の変数にアスタリスクを利用。
data1_1, *data1_2, data1_3 = packDate1

print("真ん中の変数にアスタリスクを利用。")
print(data1_1, "/", data1_2, "/", data1_3)

# アスタリスクを利用してアンパックを行っています。
# 最後の変数にアスタリスクを利用。
data1_1, data1_2, *data1_3 = packDate1

print("最後の変数にアスタリスクを利用。")
print(data1_1, "/", data1_2, "/", data1_3)

実行結果

アスタリスクを利用していない変数では、値をひとつ取得しています。アスタリスクを利用している変数は余った値を「リスト」で取得しています。

様々な「アンパック」の方法(アスタリスクの複数利用)

アンパックで変数にアスタリスクを付けると、複数の値をリストで取得することができます。但し、アスタリスクを利用できる箇所はひとつだけです。複数利用するとエラーとなります。

# パックを行っています。
packDate1 = 1, 2, 3, 4, 5

# アスタリスクを利用してアンパックを行っています。
# アスタリスクを複数の箇所で利用するとエラーとなります。
*data1_1, data1_2, *data1_3 = packDate1

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST