前書き
この記事では、サンプル コードで見つかった問題を通じて Python のコネクタ (+、+=) を詳しく紹介します。これ以上は説明せずに、詳細な概要を見てみましょう。
次のコードがあるとします:
a = [1, 2, 3, 4] b = [5, 6, 7, 8, 9] c = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20] for item in (a, b, c): item += [0] * (10 - len(item)) print a print b print c
このコードが意味するのは、リストが 3 つあり、長さが 10 になるように 10 以外の長さのリストの末尾を 0 で埋める必要があるということです。
出力は次のとおりです:
[1, 2, 3, 4, 0, 0, 0, 0, 0, 0] [5, 6, 7, 8, 9, 0, 0, 0, 0, 0] [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
ここでは問題ありません。すべて正常です。ただし、要件が変更され、10 以外の長さのリストの先頭をゼロで埋める必要があります。
そこで、次の変更を加えてみます:
a = [1, 2, 3, 4] b = [5, 6, 7, 8, 9] c = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20] for item in (a, b, c): item = [0] * (10 - len(item)) + item print a print b print c
出力を直接見てみましょう:
[1, 2, 3, 4] [5, 6, 7, 8, 9] [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
結果は私たちが想像したものと異なります。問題が見つからない場合は、読み続けてください。もちろん、すでに手がかりを確認している場合は、ここで時間を無駄にする必要はありません。
私たちの固有の考え方によれば、次の例のように、上記の方法は実行可能です:
>>> l = [1, 2, 3, 4, 5] >>> l = [0]*5 + l >>> l [0, 0, 0, 0, 0, 1, 2, 3, 4, 5]
このような操作により、リストは私たちが期待する変更を取得できます。
しかし、さらにいくつかの手順を追加するとどうなるでしょうか:
>>> l = [1, 2, 3, 4, 5] >>> id(l) 139935500860952 >>> l = [0]*5 + l >>> l [0, 0, 0, 0, 0, 1, 2, 3, 4, 5] >>> id(l) 139935500783272
この時点で、すでに問題が発生していることが分かりましたか? id() メソッドの出力からわかるように、後ろの「l」は前の「l」ではなくなります。
以下の例を見てください:
>>> l = [1, 2, 3, 4, 5] >>> id(l) 139935500861024 >>> l += [0]*5 >>> l [1, 2, 3, 4, 5, 0, 0, 0, 0, 0] >>> id(l) 139935500861024
+= を使用する場合、「l」の前後に 1 が続きます。この時点で、記事の冒頭の例は説明できないわけではなく、理由があるという事実を理解する必要があります。
心配しないで、もう一度例を見てみましょう:
>>> t = (1, 2, 3, 4, 5) >>> id(t) 139935501840656 >>> t += (0,)*5 >>> t (1, 2, 3, 4, 5, 0, 0, 0, 0, 0) >>> id(t) 139935502151336
リストをタプルに置き換えると、結果が再び変化することがわかります。
それでは、タプルに対して + 演算を使用するとどうなるでしょうか:
>>> t = (1, 2, 3, 4, 5) >>> id(t) 139935501081200 >>> t = (0,)*5 + t >>> t (0, 0, 0, 0, 0, 1, 2, 3, 4, 5) >>> id(t) 139935502151336
これはリストの結果と同じであり、違いはありません。
次に、文字列を見てみましょう:
>>> s = "hello" >>> id(s) 139935500909712 >>> s += "world" >>> s 'helloworld' >>> id(s) 139935500909664
結果は、+= を使用して文字列を連結した後、「s」が再割り当てされ、前の変数ではなくなります。メモリに反映され、「s」は値を保存するための追加の記憶領域を開きます。
ここで、これから説明する Python コネクタは + と += です。これら 2 つの記号は Python では異なる意味を持ち、1 つは数学で使用される加算演算であり、もう 1 つはシーケンス型で使用されるスプライシング関数であることに注意してください。ただし、加算演算子として使用する場合は、この記事で説明する使用規則に従います。なぜなら、これら 2 つのシンボルについて議論することは、本質的に Python の不変と可変、つまり変数型と不変型について議論することになるからです。可変型の場合は変数をその場で変更できます。つまり、リストなどの記憶域は読み取り専用であり、必要に応じて変更できません。不変型に対して特定の操作を実行して新しい結果を取得するには、新しく生成された結果を保存するための新しい記憶領域を作成する必要があります。
上記の例から、次の結論を導き出すことができます:
変数タイプの場合:
+: 接続操作を表し、その結果は新しいオブジェクトを作成します。
+=: 追加操作、つまり、別のオブジェクトのコンテンツを所定のオブジェクトに追加するインプレイス操作を表します。
不変型の場合: + と += は両方とも接続演算または加算演算を表し、演算の結果は新しいオブジェクトを生成します。
記事の冒頭の例を分析しましょう。 for 反復は代入と同等なので、簡単にするために、以下に示すように a のみを分析します。
>>> a = [1, 2, 3, 4] >>> t = a >>> id(a) 139712695835400 >>> id(t) 139712695835400 >>> t += [0]*6 >>> t [1, 2, 3, 4, 0, 0, 0, 0, 0, 0] >>> id(t) 139712695835400 >>> id(a) 139712695835400 >>> a [1, 2, 3, 4, 0, 0, 0, 0, 0, 0] >>> >>> >>> a = [1, 2, 3, 4] >>> t = a >>> id(a) 139712695835464 >>> id(t) 139712695835464 >>> t = [0]*6 + t >>> t [0, 0, 0, 0, 0, 0, 1, 2, 3, 4] >>> a [1, 2, 3, 4] >>> id(a) 139712695835464 >>> id(t) 139712695835400
ここで、 t は a への参照です。 、これは記事の冒頭の例の項目に相当します。 += を使用して t を操作すると、実際には a が操作され、+= はその場で操作されるため、t が変更されると、a も変更され、+ を使用して t が操作され、その結果が t に代入されます。 , t はもはや a を指していませんが、[0]*6 + t を指しているため、a は変更されていません。
まとめ
以上がこの記事の全内容です、ここで議論していることは単純な問題ですが、この問題についてこれだけ長い時間をかけて話してきたので、私が言いたいのは、こういった小さな問題についてです。 , 十分に理解していないと、プログラミングの際にトラブルが発生する可能性があります。
Python のコネクタ (+、+=) の詳細な例については、PHP 中国語 Web サイトの関連記事に注目してください。

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

Pythonは迅速な開発とデータ処理に適していますが、Cは高性能および基礎となる制御に適しています。 1)Pythonは、簡潔な構文を備えた使いやすく、データサイエンスやWeb開発に適しています。 2)Cは高性能で正確な制御を持ち、ゲームやシステムのプログラミングでよく使用されます。

Pythonを学ぶのに必要な時間は、人によって異なり、主に以前のプログラミングの経験、学習の動機付け、学習リソースと方法、学習リズムの影響を受けます。現実的な学習目標を設定し、実用的なプロジェクトを通じて最善を尽くします。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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

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