fc2ブログ
タプルのいろいろ
Pythonにおけるタプル(tuple)は、丸括弧でオブジェクトをくくると定義出来ました。

>>> (1,2,3)
(1, 2, 3)

リスト(list)と何が違うのかというと、一度定義したら変更できないところでした。

>>> t = (1,2,3)
>>> l = [1,2,3]
>>> t
(1, 2, 3)
>>> l
[1, 2, 3]
>>> l[0] = 0
>>> t[0] = 0
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
>>> l
[0, 2, 3]
>>> t
(1, 2, 3)

ちなみに、変更できるオブジェクトをmutable、変更できないオブジェクトをimmutableと言ったりします。
変更出来ない代わりに、タプルは辞書のキーになれるというメリットがあります。

>>> d = {[0,0]:'a',[0,1]:'b'}
Traceback (most recent call last):
File "", line 1, in
TypeError: unhashable type: 'list'
>>> d = {(0,0):'a',(0,1):'b'}
>>> d
{(0, 1): 'b', (0, 0): 'a'}

さらに、タプルのカンマは結構省略できるという事実をご存知でしょうか?こんな感じです。

>>> d[(0,0)]
'a'
>>> d[0,0]
'a'

まあ、ちょっとだけ楽だというだけなんですが、PythonからExcelのファイルを扱うことができるpyExceleratorなどで見られる書き方です。
ちなみに、このpyExceleratorもかなり便利です。
スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

【2010/05/23 22:39】 | Python | トラックバック(0) | コメント(2) | page top↑
<<「エキスパートPythonプログラミング」良さそうです | ホーム | Pythonと日本語文字>>
コメント
タプルの定義
> Pythonにおけるタプル(tuple)は、丸括弧でオブジェクトをくくると定義出来ました。
私も以前は勘違いしていて、よく間違われるのですが、タプルはカンマで区切られた値から定義されるのが正しいようです。

>>> (1)
1
>>> 1,
(1,)
>>> 1,2,
(1, 2)

http://www.python.jp/doc/release/tut/node7.html#SECTION007300000000000000000
【2010/06/14 16:04】 URL | t2y #-[ 編集] | page top↑
Re: タプルの定義
t2yさんありがとうございますー。

なるほど、たしかに。カンマで区切るとタプルなんですね。
そう考えると、()が省略出来るというのもわかりますし、アンパック代入みたいなのも統一的に理解できます。

>>> a,b = 1,2
>>> a
1
>>> b
2

Python3からはこんな記述もいけるみたいですね。

>>> a,b,*c = 1,2,3,4,5,
>>> a
1
>>> b
2
>>> c
[3, 4, 5]
【2010/06/15 08:21】 URL | 辻真吾(つじしんご) #-[ 編集] | page top↑
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://tanopy.blog79.fc2.com/tb.php/54-375a862d
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |