タプル、リスト、デクト
Pythonにはデータを作成する際に便利な構造が沢山?あります。
>>> t = () >>> l = [] >>> d = {} >>> dir(t) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__g t__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul_ _', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__str__'] >>> dir(l) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli ce__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__gets lice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', ' __le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__r educe_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__ ', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'p op', 'remove', 'reverse', 'sort'] >>> dir(d) ['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__' , '__eq__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', ' __init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__re duce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', ' clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
よく利用するのは、リスト(list)とデクト(dict)だと思う。タプル(tuple)はリストからリストを操作する機能を取り除いた構造と考えて良いと思う。タプルってどこで利用すればいいのかな?タプルでできる事は全てリストでできると思うのだが、さらに操作性を考えるとリストの方が利用しやすいと思うのだが。タプルの使いどころがわからない。また、タプルを使う事によって得られるメリットとかあるの?なんだろうね。
デクトは良く言われるのはハッシュとか連想配列とかと同じもの。文字列をキーにして値を取得できるデータ型だね。
>>> l = ["a", "b", "c", "d"] >>> for i in l: ... print(i) ... a b c d >>> print("\n".join(l)) a b c d
なるほど
>>> d = { ... "one" : "Ichi", ... "two" : "Ni", ... "three": "San" ... } >>> for k, v in d.items(): ... print("%s=%s" % (k, v)) ... three=San two=Ni one=Ichi
順番は保存されていないね。そうそう、「range()」ってのは便利だ。
>>> for i in rrange(5): ... print i ... 0 1 2 3 4 >>> li = ["a", "b", "c", "d", "e"] >>> for i in range(len(li)): ... print(li[i]) ... a b c d e
便利だ。
あと、こんな事もできる。これにはちょっとビックリした。
>>> data = { ... "Tom": (96, 88, 92, "All-Round"), ... "Sam": (13, 96, 31, "Defensive"), ... "Fin": (89, 19, 92, "Offensive") ... } >>> for name, (offense, defense, mental, comm) in data.items(): ... print("%s: %d-%d-%d %s" % (name, offense, defense, mental, comm)) ... Fin: 89-19-92 Offensive Sam: 13-96-31 Defensive Tom: 96-88-92 All-Round >>>
めっちゃ便利だ。