原則として基本となるPythonのリスト

Pythonのリストデータ構造は、どのようにのようなものでしょうか?

リストは配列やリンクリストを達成することができます:彼は本があると言います。
注文表には、それがどのようにあるのですか?一般的なシーケンステーブルは配列です。

線形リストは、ユーザは、任意の位置に挿入、削除、アクセス、および要素を置き換えることができますコレクションです。
リストの実装は、配列またはリストベースの構造に基づいています。速い重リンクリスト構造よりも、リスト反復子、ダブルリンクリスト構造を使用している場合。
要素の順序付きリストは、昇順または降順に配置された要素に応じて常に。


実装の詳細は、
パイソン英語名リスト内のリストに、簡単に他の言語のリストに標準ライブラリを混同するのが一般的(C ++、Javaの、など)を作ります。実際にはCPythonのリストが一覧ではありません(理解しやすい英語への可能性:リストの中のpythonは、リストではありません)。CPythonのでは、リストは、可変長配列として実装されます。

「Pythonの高度なプログラミング(第2版)」を参照してください。

詳細ビューから、Pythonリストは、他のオブジェクトへの参照の連続配列です。アレイの長さへのポインタは、リストヘッド構造に格納されます。これは、すべての時間はあなたが標準サイズ(再配分)の必要性への参照の配列からなる、要素を追加したり、削除することを意味します。これらのアレイを作成する際の操作が常にアレイのサイズを変更する必要はないので、幸いなことに、Pythonは、指数分布を使用します。しかし、このような理由の追加または削除要素はそれほど複雑で償却されます。

残念ながら、Pythonの「小さな価格」での通常の連鎖計算の複雑さに他のいくつかの操作が比較的高いです。

Oの複雑さ(N) - list.insert(I、項目)任意の位置に要素を挿入する方法で使用
list.pop(I)またはlist.remove(値)を使用して要素を削除- Oの複雑さ(N)を


アルゴリズムの効率リスト
時間の複雑さを測定するために使用することができます。

インデックス()O(1)
Oを追加(1)
POP()O(1)
POP(I)O(n)の
挿入(I、項目)O(N)
デルオペレータO(n)の
反復はO(N)を
含有します( )O(N)で
スライス[X:Y]うO(K)
デルスライスO(n)が
設定されたスライスO(N + k)は
O(n)は逆
O(k)が連結
ソートO(nlogn)
O(NKを乗算します)

低い値は、ブラケットの高い効率O表します


リストとタプルの
リストとタプルの間の差は明らかである:
リストは動的であり、標準サイズ(再割り当て)のものであってもよい;
およびタプルは一度作成不変で変更することはできません。

Cリスト内のタプルとは、時間の要素の多数のために、実現することは非常に類似している
高速見つからないタプルのリストの理由より、対応するオブジェクトへの配列ポインタです。
しかし、小さなオブジェクトのためである、タプルオブジェクトプール小さいので、繰り返しの使用タプルもメリットがあるでしょう。

なぜタプルべきで、合理性がたくさんあります。
実際の状況は、実際に、このような二次元の地理的座標のような多くの固定サイズのリスト構造がある;
またタプル要素は当然読み取り専用属性に与えられます。

タプル速い人のリストは配列とC ++でのリストにはおそらく類推のPythonのタプルやリストであるよりも、考えてみてください。


関連文書
飛び込むPythonは内部実装を示しています:HTTP://python.jobbole.com/82549/
[Pythonの]リストの詳細を根底に、タプル、辞書には、設定します。https://blog.csdn.net/siyue0211/article/details / 80560783
Pythonのリスト:HTTPS::初心者が動作し、内部実装する方法を知っている必要があります//mp.weixin.qq.com/s/IkFak4iYYqW7u61P7eu22g
Pythonの研究ノートは-内部実装の一覧を表示します。https://www.jianshu.com/p/cd75475168ae
Pythonのは、根本的な実行から理解されるます。https://www.csdn.net/article/2015-05-28/2824795

おすすめ

転載: www.cnblogs.com/liujiliang/p/11390322.html