タプルはリストと似ていますが、イミュータブルな点が異なります。
要素の追加や削除や変更ができないというということです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
>>> empty_tuple = () >>> empty_tuple () >>> a_tuple = '123', #要素が1個でも、カンマで区切る >>> a_tuple ('123',) >>> b_tuple = 'a','b','c' #要素が複数個の場合、最後のカンマは省略可能 >>> b_tuple ('a', 'b', 'c') >>> c_tuple = ('a','b','c') #()かっこをつけてタプルをつくるとわかりやすい >>> c_tuple ('a', 'b', 'c') >>> d_tuple = ('a', 'b', 'c') >>> a, b, c = d_tuple #一度に複数の変数に代入 >>> a 'a' >>> b 'b' >>> c 'c' >>> a, b, c, d = d_tuple #タプルd_tupleには4つも要素がないので、例外発生 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: not enough values to unpack (expected 4, got 3) >>> a = 'a' >>> b = 'b' >>> a, b = b, a #値の交換。タプルのアンパック >>> a 'b' >>> b 'a' >>> sample_list = [1, 2, 3] >>> tuple(sample_list) #tuple()でリストをタプル化 (1, 2, 3) # 関数の返り値をタプルで受け取って代入 >>> def fun(a, b): ... a = 'new' ... b = b + 1 ... return a, b ... >>> x, y = 'old', 9 >>> x, y = fun(x, y) >>> x 'new' >>> y 10 |
タプルの特徴。リストとの違いなど
タプルとリストは似ていますが、タプルはイミュータブルで文字列と同様に上書きできません。リストはミュータブルで、要素の追加削除変更などが可能です。
では、リストだけ使えばいいのかというと、現実的には確かにリストを利用することが多いです。
しかし、タプルはその不変性ゆえに重宝されるものでもあります。
リスト形式でオブジェクトを渡した際には、なんらかの処理をしていく上でそのリストを書き換えてしまう可能性がゼロではありません。
タプルを使えば、ある種の整合性が確保できます。
加えて、タプルは消費メモリが小さい点や辞書のキーとして利用できる点が特徴です。