Python の面接では、シャロー コピーとディープ コピーは比較的難しい質問です。60 パーセントの人はシャロー コピーとディープ コピーについて聞いたことがなく、30 パーセントの人は基本的なことしか理解していませんコンセプトとシンプルさの違い。 2 つの違いを正確に見分けて、関連するコード デモの作成を完了できる大人は 1 人未満です。今日はこの悩みを解決して、面接に昇進の重みを加えていきましょう!この記事は、シャロー コピーとディープ コピーについて説明したインターネット上で最もわかりやすい記事と思われます。記事の例に従って実践していただければ、シャロー コピーとディープ コピーの技術的な難しさは必ず理解できるでしょう。コピーは!
変数の割り当て
Python 変数データ型 (リスト、ディクショナリ、セット) では、変数データ型の変数を別の変数に割り当てます。2 つの変数は、同じオブジェクトには同じものがあります。メモリ アドレス。1 つの変数が変更されると、それに応じて他の変数も変更されます。 Python の可変データ型と不変データ型の技術的な詳細について知りたい場合は、次の記事を参照してください: Python インタビューでよくある質問: 可変データ型と不変データ型の違い。
前回の記事から例を見てみましょう。
l1=['a','b','c'] l2=l1 print(id(l1)) print(id(l2)) l2.append('d') print("************") print(id(l1)) print(l1) print(id(l2)) print(l2) 输出: 838366483528 838366483528 ************ 838366483528 ['a', 'b', 'c', 'd'] 838366483528 ['a', 'b', 'c', 'd']
出力結果についてはここでは説明しませんが、l1とl2のアドレスは同じなので相互に影響します。
浅いコピー
オブジェクトの最上位をコピーし、オブジェクトの「参照」のみをコピーします。
前の記事の例を見てみましょう。リストにはレイヤーが 1 つだけあります。つまり、要素には他のリストが含まれません。
l3=['x','y','z'] l4=list(l3) print(id(l3)) print(id(l4)) l4.append('a') print(l3) print(l4) 输出 831456302152 831480344136 ['x', 'y', 'z'] ['x', 'y', 'z', 'a']
結果からわかるように、l3 と l4 のアドレスは異なるため、相互に影響しません。
別の例を取り上げて、l3 の最初の要素をリストにしてみましょう。
l3=[['x','y','z'],'a','b'] l4=list(l3) print(id(l3)) print(id(l4)) l4.append('c') print(l3) print(l4) 结果 533336249416 533337391240 [['x', 'y', 'z'], 'a', 'b'] [['x', 'y', 'z'], 'a', 'b', 'c']
結果は予想どおりです。最初の要素はリストなのでアドレスもあり、それを出力します。
print(id(l3[0])) print(id(l4[0])) 结果 533336248904 533336248904
l3[0] と l4[0] のアドレスが実際には同じであることがわかり、次のコードを実行します。
l3[0].append('yy') print(l3) print(l4) 结果 [['x', 'y', 'z', 'yy'], 'a', 'b'] [['x', 'y', 'z', 'yy'], 'a', 'b', 'c']
結果は期待どおりであり、l3[0] の値を変更すると l4[0] にも影響します。では、l3[0] と l4[0] が相互に影響を与えないようにするにはどうすればよいでしょうか? これには、ディープ コピーの導入が必要です。
ディープ コピー
ディープ コピーでは、オブジェクト内の各レイヤーがコピーされます。コピーされたオブジェクトは、元のオブジェクトから完全に独立しており、関係はありません。ディープ コピーを実装するには、コピー モジュールで deepcopy メソッドを使用する必要があります。
import copy l3=[['x','y','z'],'a','b'] #l4=list(l3) #浅拷贝,使用=copy.copy(l3)也可以实现浅拷贝 l4=copy.deepcopy(l3) #深拷贝 l4.append('c') print(id(l3[0])) print(id(l4[0])) l3[0].append('yy') print(l3) print(l4) 输出 407168435784 407166887304 [['x', 'y', 'z', 'yy'], 'a', 'b'] [['x', 'y', 'z'], 'a', 'b', 'c']
l3[0] と l4[0] は完全に独立しており、互いに影響を与えていないことがわかります。
シャロー コピーとディープ コピーの概要
多くを語る必要はありません。2 枚の図を使って簡単に説明します。
シャロー コピーは次のとおりです。
以下に示すディープ コピー:
以上がPython の面接でよくある質問: 浅いコピーと深いコピーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版
便利なJavaScript開発ツール
