Pythonには数値などを扱う際にデータをしまえるlist関数という便利なものがあります。しかし、さらに学んでいくとPythonにはtuple(タプル)関数という似たものがあり、学び始めたばかりの初心者には両者の違いがよくわかりませんよね。
list関数とtuple関数はプログラミングの記述も似ており、前者は[]で後者は()で宣言を行い、内部にしまうデータについてはカンマとシングルクォーテーションで表記します。例えばこのような形です。
list関数:apple1 = [1,2,3,’japan’]
tuple関数:apple1 = (1,2,3,’japan’)
Pythonのlist関数とtuple関数はどちらも使いこなせれば、非常に強力なツールになり得ます。両者を正しく理解して、違いを生かしたプログラミングができるようにしましょう。
そこで、今回は混同しやすいPythonのtuple関数の使い方について解説します。
Pythonのtuple(タプル)関数とは
Pythonのtuple関数の使い方を説明する前に、まずはこのtuple関数がどのようなものなのか簡単に説明します。このPythonのtuple関数とは、簡単にいってしまうとデータをしまえる箱のようなものです。
そして、tuple関数は()で宣言を行い、内部にしまうデータについてはカンマとシングルクォーテーションで以下のように表記します。
ちなみに、上の例ではtuple関数の「apple1」の中に要素が4つ入っていますが、この際の数え方は左から0、1、2、3と数えていきます。こちらについては出力の際にインデックスを指定して、利用することがあるので覚えておく必要があります。
以上がPythonのtuple関数についてですが、説明した点はほとんどlist関数と共通であり、違うのは宣言が()ではなく[]である点だけです。これらを踏まえて以下ではどのような違いがあるのか説明しましょう。
tuple関数とlist関数の違い
Pythonのtuple関数とlist関数の違いを端的に説明すると、しまったデータを変更できるかどうかです。具体的にはlist関数の場合にはデータを変更できますが、tuple関数は変更できません。
また、しまったデータの順番を変えることができてしまうと、計算式によっては全く違った結果が生まれてしまうこともあります。そのため、list関数を利用して記述してしまうとそのようなことが起きかねないので、データの中身と順番を変えたくない場合にはPythonではtuple関数を用います。
つまり、変数を扱う場合にはlist関数、定数を扱う場合にはtuple関数と記述する際に使い分けしましょう。ちなみにこのしまったデータを変更できるかどうかの違いは、両者の機能面に以下のような大きな差を生んでいます。
count
index
append
clear
copy
count
extend
index など
以上のようにtuple関数では2つの機能しか扱えないのに対し、list関数ではたくさんの機能が利用できます。それでは、次の章から具体的なtuple関数の使い方をお伝えしましょう。
tuple関数の使い方〜基本編〜
以下のように書けばtuple関数としてPythonは認識します。ここでは、まず数字と文字が入った以下のtuple関数に名前を付けて、画面上に表示させることから始めましょう。
仮にこのtuple関数に「apple1」という名前を付けて、画面に表示させるなら以下のようにすればよいです。
print(apple1)
なお、基本的には()をつけるのがtuple関数の正式な記述方法ですが、以下のようにしても認識します。
ちなみに組み込み関数のtypeを利用すると実際に記述した関数が、tuple関数かどうか確認できるので以下のようにやってみましょう。
type(apple1)
<class’tuple’>
次に、このtuple関数からしまわれたデータを出力してみましょう。今回は「japan」という言葉を以下のように抜き出します。
print(apple1[3])
こちらはprint(apple1[3])とはapple1内のインデックス番号3番を出力するように命令しており、インデックス番号は左から0、1、2、…と数えていくので結果japanが出力されます。補足するとなぜこのようなインデックスを使えるのかといえば、tuple関数が整数や浮動小数点数、文字列などを扱える複合のデータ型だからです。
これにより1つの変数によって定義することで、複数のデータをしまえ、取り出すことができます。わかりやすいイメージとしては、ある1つの文章から文字を取り出しているものであり、今回は文字列である’japan’が対象になっています。
apple2[2][1] ※apple2のインデックス番号2、(3,4)内のインデックス番号1を出力
以上がtuple関数の基本になります。
なお、補足としてtuple関数内にしまったデータを変更できるか試してみましょう。この場合は以下のように入力すれば確認可能です。
apple1[2] = 4
するとエラーメッセージが表示され、Pythonのtuple関数はしまったデータを変更できないことが確認できます。
tuple関数の使い方〜応用編〜
ここでは、Pythonのtuple関数の応用的な使い方を以下の3つ紹介します。
- しまわれているデータをより複雑に出力する
- tuple関数の+や*の演算子について
- tuple関数とlist関数の変換について
まず、1にあるようにしまわれているデータをより複雑に出力する方法を説明します。まず、以下のtuple関数を用意しましょう。
このデータの中から任意の場所の連続したタプルを出力する際には、以下のように入力します。
これはインデックス番号の2番から6番までを出力するものですが、実際には末尾の-1番までが表示されます。なお、以下のように記述すると、最初や最後までの任意の番号が表示されるのでぜひやってみましょう。
(1,2,3,4,5,6)
次に、2にあるようにtuple関数の+や*の演算子について説明します。tuple関数では2つのタプルを繋いだり、繰り返す場合に+や*の演算子を以下のように用います。
apple1 = (1,2,3,’japan’)
banana= (1,2,3,4,5,6,7,8,9,10)
apple1 + banana
apple1 = (1,2,3,’japan’)
apple3 =apple1*3
apple3
以上のように+や*の演算子でtuple関数をまとめたりすることができます。それぞれが足されたり、乗算されるわけではないことを理解しましょう。
最後に、tuple関数とlist関数の変換について解説します。両者は似ている点もありますが、異なる関数なのでまったく同じ扱いはできません。しかし、以下のような手順を踏めばtuple関数をlist関数へ、list関数をtuple関数へと変換可能です。
apple1 = (1,2,3,’japan’)
apple5 = list(apple1)
print(apple5)
apple5 = [1,2,3,’japan’] apple6 = tuple(apple5)
print(apple6)
このように両者を変換することができるので、必要に応じて利用してください。
tuple関数の使うときの注意点
Pythonでtuple関数を利用する際には以下の点に注意しましょう。
- 1つのデータをしまうときはtuple関数と認識されるように記述する
- list関数のように使えたと誤認するケースがある
まず、1にあるようにPythonでtuple関数を利用する際に、1つのデータをしまうときには記述の仕方に注意が必要です。これまでの説明でtuple関数はカンマとシングルクォーテーションで宣言できると言いましたが、データが1つの場合では以下のように記さなくてはいけません。
実はデータが1つの場合では、最後にカンマをつけないとtuple関数と認識されず、ただの文字列と捉えられます。そのため、単一のデータをtuple関数で記述する際は上のようにカンマを必ずつけましょう。
次に、2にあるようにlist関数のように使えたと誤認するケースがあります。具体的には以下のようなもの場合です。
apple1 = (1,2,4,’japan’) ※2
apple1
(1,2,4,’japan’) ※実行結果
一見すると、2番目の数値が3から4に変化したように見えるでしょう。しかし、これは※1のtuple関数を別の※2に新しく作成しただけにすぎません。初心者のみなさんは誤認することもあるかもしれませんが、tuple関数はデータの内容をいじれないので不可能です。
ちなみにid()関数を用いるとそれぞれのIDが異なっていることがわかるので、以下を実行して確認してください。
id(apple1)
id(apple1)
さて、今回はPythonのtuple関数の使い方を含む以下の内容についてお伝えしました。
- tuple関数は()で宣言し、カンマとシングルクォーテーションで記述することでデータをしまえる関数
- tuple関数とlist関数は似ているが、しまったデータをいじれるかどうかという違いがある
- tuple関数はしまったデータを関数名[インデックス番号]で出力できる
- 関数名[x:y]で任意の場所をまとめて出力したり、+や*の演算子でしまったデータの追加や反復などができる
- しまうデータが1つの場合は(x,)などと最後にカンマを入れ、list関数のようにtuple関数を使えたと誤認しないように気を付ける
Pythonのtuple関数はlist関数と同じように使えますが、しまったデータを変更できないという違いを持っています。使いこなすことができれば、list関数と同様に便利なツールとして利用できるので、説明した方法で入力を行い動作を確認してください。
そうすれば新しいアプローチでPythonのプログラミングをより上達させることができるはずです。ぜひ、みなさんのPythonの世界を広げましょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。