[Python-ml-jp 2816] Re: tupleに対してindex メソッドを使いたい
Tamito KAJIYAMA
kajiyama @ grad.sccs.chukyo-u.ac.jp
2004年 2月 25日 (水) 21:32:24 JST
梶山です。
SHIROUZU Hiroaki <shirouzu @ ntt-it.co.jp> writes:
|
| 数ヶ月前から、Python を触り初めて、疑問だったのですが、
| 良く似ている2つの型、immutable な tuple と mutable な list を
| Python が用意している理由はなぜでしょう?
| (といって、別段、不都合があるわけではないのですが…)
| ご存知の方がいらっしゃいましたら、お教えください。
Python の FAQ にそのものズバリの項目がありました。
General Python FAQ
4.15 Why are there separate tuple and list data types?
http://www.python.org/doc/faq/general.html#why-are-there-separate-tuple-and-list-data-types
以下は拙訳です。
4.15 なぜタプルとリストという別個のデータ型があるのですか?
リストとタプルは多くの点で似ていますが、普通は根本的に異なる方法で用
いられます。タプルは、Pascal のレコード、もしくは C の構造体と似たよ
うなものであると考えることができます。すなわち、タプルは互いに関連す
るデータの小さな集まりであり、一個のグループとして操作される別個の型
となり得るのです。例えば、デカルト座標は二つ乃至三つの数値のタプルに
よりうまく表現できます。
一方、リストは他の言語における配列に似ています。リストが保持するオブ
ジェクトの数は随時変化し、それらのオブジェクトはみな同じ型を持ってい
て一つずつ順に処理される傾向にあります。例えば、os.listdir('.') はカ
レントディレクトリにあるファイル群を表す文字列のリストを返します。こ
の出力を処理する関数は、普通はそのディレクトリにファイルが一つや二つ
増えても動作しなくなることはありません。
タプルは不変 (immutable) です。これは、一度タプルが作られるとその要
素を新しい値で置き換えることはできない、ということを意味します。リス
トは可変 (mutable) であり、リストの要素をいつでも変更することができ
ます。不変の要素だけが辞書のキーとして使えるので、タプルはキーとして
使えますがリストはキーとして使えません。
--
KAJIYAMA, Tamito <kajiyama @ grad.sccs.chukyo-u.ac.jp>
Python-ml-jp メーリングリストの案内