No Result
View All Result
WebHack
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
No Result
View All Result
WebHack
No Result
View All Result
Home プログラミング

【Python初心者向け】タプル(tuple)の使い方を徹底解説!

fukii by fukii
2020年3月1日
in プログラミング
0
【Python初心者向け】辞書(dict)の使い方を徹底解説!
0
SHARES
11
VIEWS

Pythonの タプルはリストと同じく「複数の変数を1個の値として使えるようにまとめる」機能です。

リストがあればほとんどケースで事足りますが、タプルの方が良い時もあります。

ここではタプルについて

  • Pythonのタプルって?
  • Pythonのタプルの基本的な構文、初期化方法は?
  • Pythonのタプルとリストの違いは?
  • Pythonのタプルが輝くときはどんな時?

といった疑問に答えつつ、タプルについて解説していきます。

目次

  • 1 Pythonのタプル(tuple)の初期化
    • 1.1 基本的なタプルの初期化
    • 1.2 tuple()を使った初期化
  • 2 Pythonのタプル(tuple)の使い方
    • 2.1 要素の参照
    • 2.2 タプルのアンパック
  • 3 Pythonのタプルとリストの違い
  • 4 Pythonのタプルの使いどころについて
    • 4.1 変更を許可しない変数を作るとき
    • 4.2 辞書のキーに使える
  • 5 Pythonでどうしてもタプルの要素を変更したいときは?
    • 5.1 新しいタプルを作って再代入する
    • 5.2 タプル同士を結合する
    • 5.3 一度リストに変換する

Pythonのタプル(tuple)の初期化

タプルの使い方を解説していきましょう。

まずはタプルの初期化方法を見ていきます。

基本的なタプルの初期化

タプルの基本的な初期化方法はリストとほぼ同じですが、括弧が異なります。

タプルを初期化するには次にようにします。

書式変数 = (要素1, 要素2, 要素3, ... 要素n)

実際にタプルを初期化したのが次のコードです。

                            numbers = (3, 14, 15, 92, 65, 35) strings = ("なまむぎ", "なまごめ", "なまたまご") print(numbers) print(strings)
                          

結果

                            (3, 14, 15, 92, 65, 35) ('なまむぎ', 'なまごめ', 'なまたまご')
                          

リストの場合は結果がカギカッコだったのに対し、タプルの場合は丸カッコになっていますが、それ以外は全て同じです。

また、タプルの場合は丸カッコを省略できます。

                              numbers = 3, 14, 15, 92, 65, 35 print(numbers)
                            

結果

                              (3, 14, 15, 92, 65, 35)
                            

結果に丸カッコが付いているので、ちゃんとタプルで初期化されています。

ちなみに要素が一つしかないタプルを作る場合は、要素の後にカンマをつけます。

                              number = 3, print(number)
                            

結果

                              (3,)
                            

ちょっと不恰好な気がしないでもないですが許容範囲でしょう。

tuple()を使った初期化

次にtuple()を使ってタプルを初期化する方法を見ていきましょう。tuple()をうまく使えば効率よく初期化でき、ソースコードもスッキリするかもしれません。

連続番号を持ったタプルを作成したい場合はrange()を引数にすることで作成できます。

                              range_tuple = tuple(range(-3, 4)) print(range_tuple)
                            

結果

                              (-3, -2, -1, 0, 1, 2, 3)
                            

あとは文字列を渡すと一文字ずつに分解してタプルにしてくれます。ここら辺の連番や文字列の分解はlist()と同じです。

                            aomaki = "あおまきがみあかまきがみきまきがみ" chars = tuple(aomaki) print(chars)
                          
                            ('あ', 'お', 'ま', 'き', 'が', 'み', 'あ', 'か', 'ま', 'き', 'が', 'み', 'き', 'ま', 'き', 'が', 'み')
                          

また、tuple()を使うとリストをタプルに変換することもできます(逆にlist()を使うとタプルをリストにできます)。

                            list = [1, 2, 3] convert_tuple = tuple(list) print(convert_tuple)
                          
                            (1, 2, 3)
                          

Pythonのタプル(tuple)の使い方

次に初期化したタプルの使い方を見ていきましょう。

要素の参照

要素の参照はリストと同じくインデックス番号を使います。

                            mixes = (3, "こんにちは", True, 0.314)hello = mixes[1]print(hello)
                          
                            こんにちは
                          

タプル内の要素を全て取り出したい場合もリストと同じくfor..inを使います。

                            mixes = (3, "こんにちは", True, 0.314) for mix in mixes: print(mix)
                          
                            3こんにちは True 0.314
                          

タプルのアンパック

タプル(5, -3)を変数(x, y)に代入するといったことができます。これをタプルのアンパックと言います。

                            (x, y) = (5, -3) print(x) print(y)
                          
                            5 -3
                          

これも両方ともカッコを省略することができます。

                            x, y = 5, -3 print(x) print(y)
                          

カッコを省略すると「1行で複数の変数に代入している」ように見えます。これはこれで便利ですし、あとは関数やメソッドの戻り値がタプルだった場合に有用です。

                            def grid_calc(): return (5, -3) #タプルを返す関数 x, y = grid_calc() #戻り値をx, yで受け取る print(x) print(y)
                          

Pythonのタプルとリストの違い

基本的な初期化方法をざっと見たところで、次にタプルとリストの違いを見ていきましょう。

タプルとリストの違いは「要素の変更ができない」点です。変更しようとするとエラーになります。

                            mixes = (3, "こんにちは", True, 0.314) mixes[2] = False print(mixes)
                          
                            TypeError: 'tuple' object does not support item assignment
                          

※タプルは要素を変えることはできませんが「タプルそのものを変えることは可能です」。つまり別のタプルで再度初期化することはできてしまうので、「一度作ったタプルは絶対に変更できない訳ではない」点は注意が必要です。

                            mixes = (3, "こんにちは", True, 0.314) mixes = (3, "こんにちは", False, 0.314) print(mixes)
                          
                            (3, 'こんにちは', False, 0.314)
                          

さらに、「タプルの中にリストがある場合は、そのリストの要素は変更可能」です。

                            lists_tuple = ([1, 2], [3, 4], [5, 6]) lists_tuple[1][0] = 10 #タプルの中のリストの要素を変える print(lists_tuple)
                          
                            ([1, 2], [10, 4], [5, 6])
                          

タプルはあくまで「タプルが持つ要素の変更が不可」という点が重要です。

Pythonのタプルの使いどころについて

ぱっと見たところ、タプルはリストよりも使い勝手に欠ける「あまり使えない」印象を受けがちですが、見方を変えるとタプルの方が良い場合や、タプルじゃないとダメなこともあります。一つずつ見ていきましょう。

変更を許可しない変数を作るとき

タプルは要素の変更ができないので「変更されたくない・変更してはいけない変数を作る場合」に役立ちます。

コードを書いてるうちに変更してはいけない変数を変えてしまった…というのはよくある話で、バグの温床になりがちです(変数の有効範囲はできるだけ小さくするのが鉄則)。

タプルを使用することで間違えて変数を変えてしまうというミスを「極力」減らすことができます。

辞書のキーに使える

辞書のキーには変更不可(イミュータブルと言います)な値しか設定できないのでリストは使えませんが、タプルなら使うことができます。

                            p = (5, -3) q = (8, 4) r = (-7, 1) dict = {p : "点P", q : "点Q", r : "点R"} print(dict[p]) print(dict[r])
                          
                            点P 点R
                          

上のコードはタプルを辞書のキーにし、同じくタプルを使って辞書内の要素にアクセスしています。

このように「複数の要素をキーにしたい」場合はタプルを使うと便利です。

Pythonでどうしてもタプルの要素を変更したいときは?

基本的にタプルはタプル内の要素を変更したくない場合に使うので、タプルを初期化した後に要素を変更するのはNGです。

しかし、プログラム上どうしても要素を変更したい場合も出てくるかもしれません。そういったときにどう変更するのかを見ていきましょう。

新しいタプルを作って再代入する

一番直感的に分かりやすい方法です。

とりあえず再代入しちゃえば追加も更新も削除もできます。

                            numbers = (3, 66, 29, 9, 34) print(numbers) numbers = (66, 29, 34) print(numbers) numbers = () print(numbers)
                          
                            (3, 66, 29, 9, 34) (66, 29, 34) ()
                          

タプル同士を結合する

要素を追加したい場合はタプル同士を結合することもできます。

                            numbers = (3, 66, 29) print(numbers) numbers += (9, 34) print(numbers)
                          
                            (3, 66, 29) (3, 66, 29, 9, 34)
                          

一度リストに変換する

一度リストにして変更してから再度タプルに直すという方法もあります。

少し手間ですが、要素と要素の間に要素を挿入したい場合や、ピンポイントで要素の変更・削除がしたい場合はこのようにリストを経由しましょう。

                            chars = ("a", "b", "d", "e") list_chars = list(chars) list_chars.insert(2, "c") #bとdの間にcを挿入 list_chars.pop(0) #aを削除 tuple_chars = tuple(list_chars) print(tuple_chars)
                          
                            ('b', 'c', 'd', 'e')
                          
Tags: list tuple アンパック タプル リスト 初期化 辞書
Previous Post

【比較レビュー】GoPro HERO7とOzmo Actionの違いを解説!

Next Post

【Python初心者向け】辞書(dict)の使い方を徹底解説!

fukii

fukii

Next Post
【Python初心者向け】辞書(dict)の使い方を徹底解説!

【Python初心者向け】辞書(dict)の使い方を徹底解説!

コメントを残す コメントをキャンセル

人気記事

  • [中学生・高校生向け]どんな教室を選べばいい?おすすめのプログラミング教室を徹底解説!

    [中学生・高校生向け]どんな教室を選べばいい?おすすめのプログラミング教室を徹底解説!

    0 shares
  • スマホだけでじゃない!5Gで実現できること&変わる生活

    0 shares
  • 【プロの映像を簡単に制作】DJIのRONIN-SCを徹底レビュー

    0 shares
  • 【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    0 shares
  • 【デュアルスクリーンの4Kアクションカメラ】OSMO ACTIONを徹底レビュー

    0 shares

カテゴリー

  • IoT/ガジェット (167)
  • Webサービス (71)
  • お知らせ (4)
  • プログラミング (40)
  • モバイルアプリ (41)
  • 自動運転 (2)
  • 通信技術 (18)
  • 電気自動車 (3)

タグ

5G AI Android Apple Bluetooth Chrome Chrome拡張機能 DJI ELECOM GoodNotes5 Google GoPro IoT iPad iPad OS iPad Pro iPhone Java Javascript kickstarter list NumPy ozmoaction Python Twitter Wi-Fi Wi-Fiルーター YouTube アクションカメラ アプリ オススメ キックスターター クラウドファンディング グーグル スマートフォン ディープラーニング プログラミング プログラミング言語 モバイルバッテリー リスト リモートワーク リモート会議 ワイヤレス充電器 新型コロナウイルス 防災アイテム

WebHackはインターネットサービスやガジェットなどITトレンド情報をお伝えしていきます。

Category

  • IoT/ガジェット
  • Webサービス
  • お知らせ
  • プログラミング
  • モバイルアプリ
  • 自動運転
  • 通信技術
  • 電気自動車

Follow Us

  • プライバシーポリシー
  • お問い合わせ

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .

No Result
View All Result
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .