タプルタプルは、一般的に使用される不変の配列であり、タプルとリスト、タプルリストは、タプルを変更することはできません作成されていることを除いて、非常に似ていると述べました。
タプルの要素は、実際にそれを変更することはできませんか?最後に、彼らはそれを持っているの違いどのような種類のタプルとリスト?のは、それをチェックアウト行こう:
まず、括弧内にあるタプル定義を作成するために(を)(、)コンマ項目構成要素によって分離され、サンプルコード:
我々はタプルの要素を見つけることが業績角括弧[]で定義されたリストのリスト;両方のすべての要素間の項目は、オブジェクトの異なるタイプであってもよく、これはリストと同じですコンマ(、)で区切らを使用します。
要素を定義する方法ときにのみタプル、例えばコード:
タプルの場合:上記の結果から、我々は、と結論付け、さもなければ、括弧Pythonのインタープリターは、オペレーターのように計算され、結果として、タプルのみエレメント内に、要素はカンマ(、)に後で追加しなければなりません5の整数であり、タプル要素を定義する際要素はコンマ(、)でなければならない後に、この曖昧さを排除するために、Pythonはのみ、必要とされる;このリストとリストは同じではありません。
1 、タプルタプルインデクシングとスライシング
タプルリストインデックスとスライス方式でタプルのインデックスとスライス方法のは、実質的に同じである。[上付きヘッド従ってください:テール添字)とも呼ばれ、原則として「右オープンを中断した」原則「パック、左、右が含まれていません」 :
私たちは、次の要素を変更します。
ええと?!彼らはどのようにも配られていますか?ヒントタプルオブジェクトは、要素の割り当てをサポートしていません。
ああ、これは私たちはしばしば言うことである「タプルタプルは一度定義されて変更することができません。」
2 、タプルタプルネスト
サンプルコード:
私たちは、タプルしてみてください「Javaは」「ゴー」、サンプルコードに変更を:
ええと?彼らはそれを変更することができますどのように、タプルは一度定義された後に変更することはできませんと言ってはいけませんか?これは、人々が混乱みなされています!気配りの友人が変更された要素があることがわかりますリストは、変数の型であるため、リストタイプ。
右、それはこのようなものです。タプルの要素は以下のようなオブジェクトの不変タイプである場合:等定数、文字列、エラーが場合、これらの不変の組の要素を変更します;要素がタプルである場合以下のような変更可能なオブジェクト、:リストリストなどは、この時点で変更することができ、それはエラーではありませんでしょう。
表面には、タプルの要素は、実際に変更されていますが、変更は実際には要素のタプルではなく、要素のリスト。
再び我々の例では、分析は続けました:
最初の二つデル()は一度の要素は削除できません作成タプルを示し、与えられている;実際の文字列は、この特性を有するに、一度作成し、単一の文字列を削除することはできませんがあります。
後ろの3倍デル()子要素を削除して、我々は間違ってはTypeErrorが報告されます削除し続けた場合、サブ要素リスト変数要素が全て削除され、リスト内の変数の要素、(空リスト[])です。
上記の例は、使用 ID()メモリ・アドレスの変更の最後のタプル要素を「監視」されている、に関係なくどのように除去され、それが同一のメモリアドレスを推移していることを見出しました。
我々は最後の要素に変数を割り当てる場合はどうなりますか?サンプルコード:
上記報告 tuple_orgが[-1]この時間は[]空のリストを持っており、何の要素が存在しない[0]従って与えられ、最初の要素のビットを表すためにはIndexError添字境界例外を、
上記の例の全体のプロセスは、関係なく、割り当ては、エラーの最後の要素になりますか。tuple_org [-1]、あなたはそれがタイに行ってきましたか?変性しましたか?
上記の例とに連動して、自宅に近い方のid()出力機能、我々は次に分析しました:
タプルタプルは、それはそれを変更することはありませんタプルメモリポイント内の各要素を参照タプル「不変」と呼ばれる不変の配列です。すべての不変のシーケンス「メモリ地点」の最初の定義を再度変更することはできませんした後に、それは他のオブジェクトへの参照が含まれており、オブジェクトは、これらの参照は変数であってもよいし、修正することができる持っています。
タプルの要素の値を変更することはできませんが、我々は使用することができ、タプルの=スプライシングを
サンプルコード:
後に、それは新しい要素に来たので、その後+ =アペンド操作、メモリアドレスは、グループの要素は、変更されたメモリアドレスを再割り当て。
3 、 Pythonの組み込み関数
配列の要素数を求めるLEN()は、()配列、例えばコードをソートソート。
注:タプルが返さソートする()組み込み関数をソートすると、新たなタプルオブジェクトではありませんが、ソートされたリストのリストオブジェクト、および自分自身をタプルと変化がありません。
リストにタプル、サンプルコード:
要素の値のタプルを削除することはできませんが、我々は使用することができますが、全体のタプルを削除するには、サンプルコードをデルの文を:
ちなみに、タプルは、独自の方法を持っていないが、リストには、操作の独自の方法を持っています。
4 、総括
メモリに自身をタプル、実際のタプル、一度確立されたのデータメモリアドレスタプルコレクションに格納され、コレクションのメモリアドレスは、変更、および削除することができません。設定の変更内のアドレスと、新しいメモリアドレスを保存するためにタプルスペースを再割り当てする必要があります。
バージョンアップタプルもあります:タプルという名前 namedtupleが、それは関数オブジェクトのコレクションモジュールです。
それが言いたいことを理解するために使用するクラスのオブジェクトの組み合わせを必要とするため、名前付きタプルオブジェクト指向のフォローアップは、をご紹介することで配置されます。興味のある友人は見つけるために行くことができます。
これらの実施例及び上記を読んでの分析は、私はそれのタプルの不変シーケンスは深くはないことを理解しています。