pythonアルゴリズム


Pythonがすでに提供しているデータ型はすべての問題を解決できると思いますか?
->データ構造を学習する理由

哲学


PythonにはPythonダウンロード方式という固有の哲学がある.
Pythonは誰もが使う膨大で汎用的な言語となっているが、Pythonのダウンロード方式をベースに、新しいモジュールを作成する開発者が繰り返し考える哲学である.
「問題を解決するための信頼性、一意性、明確な方法があります.」
これが「Pythonダウンロード方式」

各言語のデータ型フィーチャー


言語サポートタイプCオリジナルタイプ巴オリジナルタイプ、オブジェクトPythonオブジェクト
元のタイプのcのみをサポートし、元のタイプとオブジェクトを同時にサポートするjava、c、javaは、パフォーマンスに優先度の高い言語です.したがって、ハードウェアに近い元のタイプを個別に提供することができ、元のタイプで実装されると、より高速に実行できます.

ではPythonは?


Pythonは当初、便利な機能を提供することを優先する言語であったため、速度が遅く、メモリが多いオブジェクトに注目し、より多くの機能を提供することができる.
Pythonは元のタイプの速度を放棄するのではなく、オブジェクトの様々な機能と利便性を選択した.

データ型



可変オブジェクトと不変オブジェクト


1.不変オブジェクト

>> 10
>> a = 10
>> b = a
>> id(10), id(a), id(b)
(4496050816, 4496050816, 4496050816)
すべてが元のタイプの場合、各値は各メモリの異なる領域に配置されます.
しかし、Pythonのすべてのコンテンツがオブジェクトであるため、メモリに存在するオブジェクトのアドレスを取得するためにid()関数を実行し、驚くべきことに同じです.

2.可変オブジェクト

>> a = [1, 2, 3, 4, 5]
>> b=a
>> b
[1, 2, 3, 4, 5]
>> a[2]=4
>> a
[1, 2, 4, 4, 5]
>> b
[1, 2, 4, 4, 5]
aはlist,bはaを参照として指定する.a要素を操作して値を変更し、bの値も変更しました.bがintまたはstrを参照している場合、このようなことは絶対に起こりませんが、listは可変オブジェクトなので、多くのことが起こる可能性があります.

不変strのエラー

>> a ='abc'
>> id('abc')
140666545382320
>> id(a)
140666545382320
>> a = 'def'
>> id('def')
140666564546672
>> id(a)
140666564546672
>> a[1]='d'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
a変数はstr資料型であり,abcを先に割り当て,defを割り当てる.
a変数の値は変化に等しい.他のstrタイプはdefを再参照しただけで、実際にabcとdefは一度生成した後も変わったことがない.変わらないから、変えられない.