データ収集の知人パイソン小さなプール

。⼀⼩小さなデータプール
我々は⼀を見て、データの小さなプールを⼩言う前に、どのようなコードブロックでどのようなコンセプトのアイデア..:

我々は公式からのプロンプトを発見した⽅当事者はその引数文書をファイル:

Pythonプログラムは、コードブロックから構成されています。ブロックを単位として実行されるPythonプログラムのテキストの一部です。モジュール、関数本体、そしてクラス定義:以下は、ブロックされています。対話的に入力された各コマンドはブロックです。スクリプトファイル(インタプリタにコマンドライン引数としてインタプリタに標準入力として与えられ、又は指定されたファイル)がコードブロックです。スクリプトコマンド(「-c」オプションをインタプリタコマンドラインで指定されたコマンド)がコードブロックです。ストリング組み込み関数のeval(に渡される引数)とexec()は、コードブロックです。
コードブロックは、実行フレームで実行されます。フレームは、(デバッグに使用)いくつかの管理情報が含まれていますし、どこでどのようにコードブロックの実行が完了した後に実行を継続し決定します。

少し荒い翻訳:
。Pythonプログラムのコードブロックをテキストファイル⼀プログラム実行部⾏トレッキングなどのpythonコードブロックで構成されている。
ブロック:⼀モジュール、関数⼀、⼀クラスごとにさえ⾄ ⼀コマンドが⼀。コマンド⼀コードのブロックである文書が⼀コード、評価()とexec()のコードのブロックである場合トレッキングを行うブロックであり、ファイル⼀

どのコマンドで⾏何?トレッキング
我々は、Pythonに入力すると、Pythonプログラムを書くことができる場所の中から、個々のケースでは、コンソールモードCMDでコマンドのpythonである。
⽽との公式な説明⽅側面によると見て⾯ 。⼀コマンドは、コマンドブロック⼀のpythonであります

⼆II。次に、我々は⼩⼀データプールとの間の差を見て)(小さいと== 1 ID

ID()によって、我々は確認でき⼀可変スケールモニタは、メモリのアドレスの値を示しています。

\ 2ですと==

==決意値は、左の両端に等しく、右ある。⼀それが一貫していません。

メモリアドレスの左右の両端の内容を決定することである⼀一貫性がある。それはTrueを返した場合は、使用量は、オブジェクトを使用し決定することができ、これらの2つの変数が同じである⼀

S = 'アレックス'
プリント(ID(S))#4326667072

私たちは、そう考えることができます。同じメモリアドレス場合。⼀その値が等しくなければなりません。値が等しい場合。⼀必ずしも同じオブジェクトを⼀

⼩小さなデータプールに。⼀データ・キャッシング機構はまた、常駐のメカニズムと呼ばれている。それぞれの言語に大きなプログラミング・ワードをズームして持っている同様の東西⻄オンライン⽹一定のボリュームプールを検索し、⼩小さなデータプールを指し、彼らは同じ⼀コンテンツです。
⼩だけのために小さなデータプール:存在しない滞在メカニズムを常駐する他の種類のデータ

整数、文字列、文字列、ブール

对于整数、Pythonの官⽅方⽂文档中这么说:
現在の実装では、その範囲内のint型を作成するときに、実際に戻ったばかりの既存のオブジェクトへの参照を取得し、-5と256との間のすべての整数の整数オブジェクトの配列を保持します。だから、私はこのケースではPythonの動作は未定義である疑いが1の値を変更できるようにすべきです。

文字列の場合:

科学Incomputer、文字列インターンのみonecopy不変でなければならない各個別の文字列値の保存方法です。文字列のインターンは、文字列を作成または抑留されたときにmoretimeを必要とする費用の一部stringprocessingタスクはより多くの時間的または空間を効率的になります。明確な

値は、INAの文字列インターンプールに格納されている - 。自動ウィキペディアからの引用しました

-5と256との間のPythonの整数に常駐メモリに残っている。セットは、特定のルール文字列の文字列キャッシュのままである。経時的使用において、メモリは、専用データオブジェクトの⼀を作成します。鉛を使用して⼩小さなデータプールメモリから直接オブジェクトを取得する際、別の使用を使用している場合⼩データが。小さなプールに保存されている。⽽⼀新しいデータを作成することなく。これはそれ以上の追加のメモリ領域を節約します。

長所:高提供する能力⼀ADVANCED処理オブジェクト作成州のいくつかの文字列、整数処理速度が若干の欠点:新しいコンテンツを作成するか、「プール」を挿入するには多くの時間がかかります。

デジタルの場合:-5 256には、プールに各小データを追加する⼩オブジェクトに対する使用が同じ⼀文字列の文字列です。

  1. 文字列⻓文字列の長さが0または1の場合、キャッシュは⾏トレッキングにデフォルト設定されます

  2. ⻓ズーム終わる文字列の長さが1以上であるが、文字列は、文字列⺟文字は、数字は、キャッシュされていない下線の単語が含まれています

  3. 乗算の文字列に0.1を使用する文字列。乗数が1である、数字、母親は下線をキャッシュすることが⺟文字のみが含まれている。場合

    長さ<= 1単語⺟母、下線、数字のみが含まれて1. 2より大きな乗数ズームに格納され⽽⻓他の文字が含まれ、そして

    このタイムラインがキャッシュされますが、終了する文字列の長さが20以上であるズームされていません⻓

  4. 滞在する居住者を指定します。我々は()関数のインターンに滞在するのsysモジュールによってホストされるコンテンツを指定することができます。

[OK]をクリックします。それだけではまだのため、現在で先の時間に。我々は状況⼀のpython⼩道を小さなデータプールのいくつかの基本的な理解を持っている。しかし、最後のフレームには疑問が!!!!。⼩データとコード始まるの小さなプールをどのようなブロックは、それを行うには何がありますか?⼀ファイル内のコマンドウィンドウ-コネクタポートとPYファイルにトレッキングコードの同じ部分を⾏。発生する効果は全く⼀同じです。

もし、コードブロックの同一の初期化コマンドオブジェクトを⼀行う場合、コードブロック内のキャッシング機構は⼀。トレッキングと同じではない、それが存在する場合、他の体重使用が使用され、値が既に存在するかどうかをチェック文は言って:あなたは⼀コードブロックをトレッキング、オブジェクトを初期化するためのコマンドが発生した同じことを実行したとき、彼はこの可変量の値で初期化されます⼀、新しい可変量の顔には、辞書に保存されます辞書内のときに最初のクエリのレコードは、あなたが同じレコードを持っている場合、サブサブメニューの例ではあなたが与えるので、それは、この辞書を使用する前にこの値を使用して繰り返します、ファイルの文書がで(トレッキングを行う⼀コードブロック)し、二つの変数⼀オブジェクトに同じ量B。

異なるコードブロックならば、彼は2つの変数を見ることがEMPTY足を介したデータの量データの⼩小さなプールかどうかであるデータがいっぱいEMPTY足であれば、⼩データの小さなプールは、同じアドレス⼀ので:. Aを指すようになります、Bの代入文の文章は、2つのコードブロックとして扱われるトレッキング行うが、彼らはEMPTY足⼩データの小さなプールが、それは2つの異なるオブジェクトを取得し、裁判官はFalseを返す⽽によるものであるだろう不満のデータです。

\ 1.基礎となるデータ・タイプのサプリメント2セットコレクション
\ 3.トニー深度コピー⻉

内容量:
⼀の基本的なデータ型のサプリメント。

int型第一とstrので、特に事前学習がそう⼰自身の表情から自動的に休むの80%以上を語られました⼀それの表情は、基本的な操作⼀文字列に補完我々について

列のリスト:ループあたりの要素のリスト⼀列を削除

リー= [ "李嘉誠"、 "ツイストつる"、 "黄海⻩ピーク"、 "カリーナ"] = S "_"参加(LI)
プリント(S)

李= "⻩ズーム黄色の大きなグイ⼥女性の" S = "_"。(LI)印刷(複数可)に参加

リー= [11、22、33、44]
のLiの電子のための:
li.remove(E)
プリント(LI)

結果:[22、44]

理由を分析:
。プロセスのためのトレッキングを実行する場合は、ポインタが現在のサイクルの要素を記録する⼀されるであろう⼀、⼀第0の先頭へのポインタ

A.そして、この時間0最初の削除。0番目の要素を取得元は、第1のフレーム要素を自動的に自動的に0、次に逆方向ポインタが移動し、再度、ポイント1つの要素になるだろうである。このオリジナルの午前1時は0となっている、それがアップ削除されません。

ポップを使用するには、[削除試みを使用します:

リー= [11、22、33、44]
:Iの範囲内(0、LEN(LI))のために
デルのLi [i]の
印刷(LI)

結果:エラー
のLi [0]の後に⼀⾯表面は最初0になった後に削除される場合#i = 0、1、2、削除
#I = 2 SO時間ときにリスト。 ⼀一つだけの要素が、これは、二つの確かに与えられているああを除去するのは初めてです

分析が見つかりました。⾏サイクルトレッキングを削除しない。削除を使用してか、デルのいずれかを使用します。実現することはできません。そして、それをポップ?

この方法でのみことが可能です。

または。列のリストを別の⼀を使用すると、その後のサイクルを削除します。削除したいものを記録します

李のためでEL:
li.pop()#のPOPも⾏トレッキングを行います

プリント(LI)の結果:[11、22]

Iの範囲内(0、LEN(LI))のために:#サイクルLEN(LI)回、順方向li.pop(から削除)

印刷(LI)

リー= [11、22、33、44]
del_li = []
およびその中:
del_li.append(S)
およびdel_liで:
li.remove(S)

印刷(LI)

注:FROMKEYでdictの()、リストによって⼀辞書を作成するために私たちを助けることができます

⼀内容が値⽣のdictより良い注意を生成するよう⾯平面後、キー、列のリストになりますよう、リスト内の各列項目に直面⾯前に..:

要素を削除する要素のインデックスの変化につながるので、それは問題に簡単に簡単です。削除するには、直接量を可能な限り再利用しないでください。

要素に加えて。あなたは、設定された量に⼀削除する別の要素を追加して、バルク削除することができます。

DIC = dict.fromkeys([ "ジェイ"、 "JJ"]、[ "ジェイ"、 "ツイストつる"])プリント(DIC)

結果:
{ 'ジェイ':[ 'ジェイ'、 'ツイストつる']、 'JJ':[ ' ジェイ'、 'ツイストつる']}

DIC = dict.fromkeys([ "ジェイ"、 "JJ"]、[ "ジェイ"、 "ツイストつる"])プリント(DIC)

dic.get( "ジェイ")。追加( "胡⼤大")プリント(DIC)

結果:
{ 'ジェイ':[ 'ジェイ'、 'ツイストつる'、 '大ズームフー']、 'JJ':[ ' ジェイ'、 'ツイストつる'、 'グレートズームフー']}

ただ、コードを変更し、よりジェイとJJは同じを使用するために⼀列リストを使用して原因。⾯する前に列リストが。しかし、後に顔を変更したことカケス

従うように変更⾯顔

反復プロセスの要素をのdictが入ることを許されていません⾏削除トレッキング

DIC = { 'K1': 'アレックス'、 'K2': 'wusir'、 'S1': ' ⾦金⽼古いボス' #}要素の削除キー'K'と
DICにおけるkの場合:

「K」KにおけるIF
デルDIC [K]
削除操作へトレッキング時に生成が許可されていません⾏

印刷(DIC)

#辞書は、ループサンディエゴ、反復中にサイズを変更しました

これを行うにはどのように?要素が⼀リストに保存される前に削除されるように、その後のサイクルリストが、その後、削除

DIC = { 'K1': 'アレックス'、 'K2': 'wusir'、 'S1': ' ⾦金⽼古いボス'} dic_del_list = []
要素は# 'K'とキーを削除している
におけるkについてDIC:

もしKに'K':
dic_del_list.append(K)
dic_del_listにおけるEL用:
デルDIC [EL]

印刷(DIC)

変換タイプ:
タプル=>列リストのリスト(タプル)=列リスト>タプルタプル(リスト)

リスト=>のstr str.join(リスト)STR =>リストstr.split()

偽0、 ''、なし、[]、()、{}、(設定)==>:誤ったデータをに変換します

セットコレクション

セットには、基本データ型のpnthonのコレクションです。一般的に.SET非常に共通の要素が繰り返されていないではありません。障害。要素は、(文字列のタプルブール値で)ハッシュ内でなければならない、我々は心に来ることができます。データの辞書の種類のみキーを保存する、値を保存せずに設定され、また、{}で表さセット

注意:要素の集合はハッシュである必要がありますが、セット自体がハッシュされていない、セットが可変である - の要素が作られていません

SET2 = { '1'、 'アレックス'、2、Trueを、[1,2,3]} ------- ------- []の内側に与えられました

SET2 = { '1'、 'アレックス'、2、トゥルーは、{1:2}} --------------- -------内部所与{}}

SET3 = {TRUE '1'、 'アレックス'、2、(1,2- [2,3,4])} -------内部()[]

要素の集合を繰り返し、無秩序されていません

S = { "ジェイ"、 "チョウ"、 "周星"}プリント(S)

結果:
{「ウィークスター」、「ジェイ」}は、障害を繰返しません-------

この機能を使用して、我々は、重複を削除するためにセットを使用することができます

LST = [4S、5R、 "華華、" 45 "中国及び中国"、50]

LST =リスト(セット(LST))-------リストに切り替え、その後、交換リストを設定します

印刷(LST)

セットセットCRUD

1.増加

S = { "カリーナ"、 "クワン"、 "チェン・リ"、 "後リトルグリーン"、 "JOURNAL ON"、 "JiangYang"}

s.add( "中国ベア")

プリント(S)

S =追加します。(「中国ベア」)-------重複したコンテンツは、設定されたコレクションに追加されていません

プリント(S)

S = { "カリーナ"、 "クワン"、 "チェン・リ"、 "後リトルグリーン"、 "JOURNAL ON"、 "JiangYang"}

s.update(「ドラゴン・プール」)--------------反復追加

プリント(S)------結果が{ "カリーナ"、 "クワン"、 "チェン・リ"、 "後リトルグリーン"、 "JOURNAL ON"、 "JiangYang" ドラゴン "" プール「}であります

s.update([ "マギー"、 "Zhangya志"、 "Zhangya志"])

プリント(S)--------結果は{「カリーナ」であり、「ロザムンド」、「暁後「」チェン・リ」、「JOURNAL ON」、「江ヤン」、「張」男「」ジェイド」 「雅」「シカゴ」「}

2.削除

S = { "カリーナ"、 "クワン"、 "チェン・リ"、 "後リトルグリーン"、 "JOURNAL ON"、 "江ヤン"、 "ドラゴンプール"}

アイテム= s.pop()-------------アップランダム

プリント(S)

印刷(アイテム)

s.remove(「リトルグリーン」)----------は、要素を削除します

s.remove(「葵」)------私はこの女性が、エラーが削除されますが存在しないこの女性を愛していません

プリント(S)

s.clear()-------(プリントアウトが設定されている。セットが空の場合、そのセットに注意してください。コレクションセットを空に)とのdictを区別するため。

印刷()-----------セット()

修正

データセットのコレクションインデックスなし。手立て位置決め要素はありませんので、直接編集する方法はありません。

私たちは、変更操作を完了するために、最初の方法を追加、削除使用することができます

S = {「カリーナ」、「クワン」、「チェン・リ」、「後リトルグリーン」、「JOURNAL ON」、「江ヤン」、「ドラゴンプール」-----} longchiにティモ

s.remove( "ドラゴン・プール")

s.add( "ティモ")

プリント(S)

お問い合わせ

反復セットオブジェクトは、forループを実行することができるされています

s内のEL用:

印刷(エル)

共通操作

S1 = { "劉粲"、 "趙のSi"、 "長い⼭⽪皮膚⻓山"}

S2 = { "劉項⻓長い"、 "農村⻓フォン長い"、 "長い⼭⽪皮膚⻓山"}

交差点

に共通する要素の二組

印刷(S1&S2)-------- { "ロングヒル紙"}

組合

プリント(S1 | S2)#{ '劉項⻓長さ'、 '農村長い⻓フォン'、 '趙のSi'、 '長い⼭⽪皮膚⻓山'、 '缶劉'}

差分セット

プリント(S1 - S2)単一最初のフレームの存在下で得られた#{「趙のSi」、「缶劉」}

アンチ交差点

二つの別々のデータセット{「フォン・タウンシップ⻓長さ」、「劉粲」、「長い⻓劉セクション」、「趙のSi」}でプリント(S1 ^ S2)#存在

S1 = { "劉粲"、 "趙のSi"}
S2 = { "劉粲"、 "趙のSi"、 "長い⼭⽪皮膚⻓山"}

子集

SET2のサブセットであるプリント(S1 <S2)#1 SET1サブメニューですか?トゥルー

スーパーセット

印刷(S1> S2)#1 SET1をSET2はそれのスーパーセットであるかどうかを検査

コピー深さ

LST 1 = [ "⾦ゴールドライオン⽑髪"、 "パクリタキセル⻰ドラゴン"、 "ホワイトBaimeiyingwang"、 "⻘Sowoskyバット"]

LST 2 = LST 1

印刷(LST1)---------------

プリント(LST2)________________--------二つの同一の結果

lst1.append( "ヤンシャオ")

印刷(LST1)

プリント(LST2)は、2つの同一の結果[ '⾦金⽑毛ライオン'、 'パクリタキセル⻰龍'、 '白Baimeiyingwang'、 '⻘Sowoskyバット'、 'ヤンシャオ']

dic1 = { "ID":123、 "名前": "谢逊"}

dic2 = dic1

印刷(dic1)
プリント(dic2)

dic1 [ '名前'] = "范瑶"

印刷(dic1)プリント(dic2)

リスト、セット、辞書のために、直接割り当て事実は、可変量のメモリアドレスである。⼀コンテンツの一部をコピーしない。Soが
LST1メモリポイントとLST2が⼀同じである。LST1もなさLST2、変更しました⽣が変更されていました

シャローコピー⻉

LST1 = [ライオン・キング「」ドラゴンパクリタキセル「」眉ホワイトイーグルキング「」バットウィング⻘「]

LST2 = LST1
プリント(LST1)
プリント(LST2)

lst1.append( "ヤンシャオ")

印刷(LST1)

印刷(LST2)

結果:
[ゴールド⽑髪ライオン「」パクリタキセルドラゴンキング「」白い眉英王「」⻘翼コウモリ「」ヤンシャオ『] [』⾦髪ライオン「」パクリタキセルドラゴンキング「」英王の眉白「」⻘ウィングバット「」ヤンシャオ「]

dic1 = { "ID":123、 "名前": "谢逊"} dic2 = dic1
プリント(dic1)
プリント(dic2)

dic1 [ '名前'] = "范瑶"

印刷(dic1)

印刷(dic2)

结果:{ 'ID':123、{ 'ID':123、{ 'ID':123、{ 'ID':123、

「名前」:「謝シュン」}「名前」:「謝シュン」}「名前」:「ヴァン・ヤオ」}「名前」:「ヴァン・ヤオ」}

リストについては、集合、辞書、直接割り当て事実は可変量のメモリアドレスである。⼀コンテンツの一部をコピーしません。SoがLST1メモリポイントとLST2が⼀同じである。LST1変化は、また、LST2 ⽣は、変更をしていました

シャローコピー⻉

LST1 = [「ギョンホ」、「ドゥシンセン」、「周ミンゆう⺠」]

LST2 = lst1.copy()lst1.append( "シン")

印刷(LST1)

プリント(LST2)
プリント(ID(LST1)、ID(LST2))

結果:
2つのLST⼀ない全く同じメモリアドレスとコンテンツが見つかりましたが、メモリコピー⻉貝を実現⼀ないと同じではありません。

LST1 = [ "ホギョン"、 "ドゥシンセン"、 "周ゆう⺠最小" [ "ねじれつる"、 "⻢ユンMA"、 "ビビ"] LST2 = lst1.copy()
LST1の[3] .append( 「⽆無敵の詳細は孤独研削された」)
印刷(LST1)

プリント(LST2)
プリント(ID(LST1 [3])、ID(LST2 [3]))

結果:
[「ヘ・ジオン」、「ドゥハイタオ、」「周瑜⺠人」、[「ねじれつる」、「⻢馬ユン」、「ビビ」、「⽆無敵がされ、より研削孤独」]] [「ヘ・ジオン」 'ドゥハイタオ、「」周瑜⺠人「[」ツイストつる「」⻢馬ユン「」ビビ「」⽆無敵の詳細は孤独研削される「]] 4417248328 4417248328

シャローコピー⻉トニートニーは⻉最初のフレーム層をコピーします。二階のコンテンツセカンドショットは⻉シェルをコピーしません。これは浅いコピー⻉ベイと呼ばれています

トニー深いコピー⻉

インポートコピー

LST1 = [ "ホギョン"、 "ドゥシンセン"、 "周ゆう⺠最小" [ "ねじれつる"、 "⻢ユンMA"、 "ビビ"] LST2 = copy.deepcopy(LST1)
LST1の[3] .append (「⽆無敵である以上、研削寂しい」)
印刷(LST1)

プリント(LST2)
プリント(ID(LST1 [3])、ID(LST2 [3]))

結果:
[「ヘ・ジオン」、「ドゥハイタオ、」「周瑜⺠人」、[「ねじれつる」、「⻢馬ユン」、「ビビ」、「⽆無敵がされ、より研削孤独」]] [「ヘ・ジオン」 'ドゥハイタオ、 ''周瑜⺠人'['ツイストつる'' ⻢馬ユン''ビビ「]]
4447221448 4447233800

おすすめ

転載: www.cnblogs.com/x-h-15029451788/p/11324556.html