メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年1月30日水曜日

[Python][お勉強] Python入門(9) - タプル

タプルをやる。

最終目標

  • タプルを理解する。
  • タプルの基本的操作を覚える。
といった感じ。

タプルとは
複数のオブジェクトを保持することができるリストやディクショナリに似たオブジェクト(コレクション)。
リストやディクショナリに似ているが、immutable。またリストやディクショナリと違ってメソッドを保持しない。カテゴリは「シーケンス」。

つまり、柔軟性のないリスト。



タプルの基本的操作


タプルの基本的操作を以下に列挙する。
操作説明
()空タプルの生成
t1 = (0,)要素を1つだけ含むタプルの生成(カンマに注意)
t2 = (0,1,2,3)4つの要素を含むタプルの生成
t2 = 0, 1, 2, 34つの要素を含むタプルの生成
t3 = ('a', ('b', 'c'))ネスト
t1[0]インデクシング
t3[1][2]インデクシングのインデクシング
len(t1)長さ
t1 + t2連結
t1 * 100繰り返し
for x in t2ループ
x in t2特定の要素が含まれているかの確認


ひとつの要素を生成する場合には、「(0,)」と要素の後ろにカンマを入れなければいけないらしい。
実際にやってみる。

>>> t1 = (0)
>>> t1
0
>>> t1[0]
Traceback (most recent call last):
File "", line 1, in ?
TypeError: unsubscriptable object

カンマを入れないとt1[0]で参照できない。カンマを入れない場合は上記の場合整数として扱われる。


>>> t1 = (0,)
>>> t1[0]
0
>>> t1
(0,)


カンマを入れるとタプルとして生成され、t1[0]でも参照できる。

だれが見てもタプルであるとわかれば、()は必ずしも書かなくてよい。

>>> t1 = (1,2,3)
>>> t1
(1, 2, 3)
>>> t1 = 1,2,3
>>> t1
(1, 2, 3)



連結や繰り返し、インデクシングやスライシングなんかもリストと同じように行える。

>>> t1 = (1,2,3)
>>> t2 = (4,5,6)
>>> t1 + t2
(1, 2, 3, 4, 5, 6)
>>> t1 *4
(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> t1[2]
3
>>> t3 = t1 + t2
>>> t3
(1, 2, 3, 4, 5, 6)
>>> t3[2:4]
(3, 4)



タプルはimmutableなので変更できない。ソートなどをしたい場合はいったんリストに変換する。

>>> t3 = (6,5,5,3,6)
>>> t3
(6, 5, 5, 3, 6)
>>> L1 = list(t3)
>>> L1
[6, 5, 5, 3, 6]
>>> L1.sort()
>>> L1
[3, 5, 5, 6, 6]
>>> T = tuple(L1)
>>> T
(3, 5, 5, 6, 6)


タプルからリストに変換するにはlist()関数を使用し、リストからタプルに変換するにはtuple関数を使用する。


まとめ
  • タプルはリストやディクショナリに似たオブジェクト。
  • タプルはimmutableで変更できない。
  • リストに似た操作を行える。
へぇ。



.

0 コメント: