Pythonの神のようなアルゴリズム

Pythonの神のようなアルゴリズム

今日は、非常に有名な Python の簡潔で効率的かつ便利なコードを見てみましょう。そのスタイルを見てみましょう。実際、それぞれのトピックについて詳しく説明すると、かなりのスペースが必要になるため、今日は簡単に見ていきましょう。

[[395145]]

これを読めば、初心者でもすぐに Python を好きになれると思います。

1. リストの導出

Python で最も簡潔で魔法のようなコードについて話す場合、リストの導出が最初にランクされるはずです。

これは、別のリストに基づいてリストを作成するための非常に簡潔な方法です。この種の表現はリスト内包表記と呼ばれます。

例1: リストから新しいリストを生成する

例 2 では、リスト内の一部の要素を次のようにフィルタリングすることもできます。

例 3: シーケンスの内容をループする必要がある場合は、それらを結合する関数を追加することもできます。

リスト導出の使い方を読んでみると、とても便利だと思いませんか?

2. withの使用法

通常、ファイルを処理するときは、まずファイルを開いて処理し、最後に閉じます。これはかなり面倒で、例外を防ぐために try/finally も使用する必要があります。多くの場合、ファイルの処理方法に集中しすぎて、ファイルを閉じることを忘れてしまいます。Python には非常に簡潔な方法があります。

通常のファイルオープンおよびクローズ処理:

with ステートメントの使い方は非常に簡単で、英語に少し似ています。with ステートメントを使用すると、書き込み操作が完了した後にファイルが自動的に閉じられるようになります。

実際、 with には多くの使用シナリオがあります。ファイルのクローズ以外にも、マルチスレッドでの使用におけるロック処理にもよく使用されます。今後の記事では、Python のマルチスレッドとマルチプロセスの使用について説明します。

with の使用法は、Python の本質を反映しています。つまり、面倒なタスクの一部を言語自体に任せ、開発者は問題を処理するロジックにのみ集中すればよいのです。

3. 匿名関数ラムダ

  • Python には、匿名関数 (つまり、関数名のない関数) と呼ばれる「遅延関数」があります。関数を渡すときに、関数を明示的に定義する必要がないこともあり、匿名関数を直接渡す方が便利な場合があります。
  • ラムダ (この名前は、実際にはハッカーが大好きな別の言語である LISP から借用したものです)。ラムダの一般的な形式は、キーワード lambda の後に 1 つ以上のパラメータ、コロン、式が続きます。
  • lambda arg1,agr2,...agrN: 引数を使って表現する

map() 関数を例にとると、リスト内の各要素の二乗を計算する場合は、それを匿名関数に直接渡すことができます。

  1. >>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
  2. [1、4、9、16、25、36、49、64、81]

比較すると、匿名関数 lambda x: x * x は実際には次のようになります。

  1. 定義f(x):
  2. x * xを返す

匿名関数を使用する利点は明らかです。

  • 一方で、命名にかかる手間を省くことができます(高品質なコードには関数の命名に一定の要件があるため)
  • 関数名の競合を心配する必要もありません
  • さらに、無名関数も関数オブジェクトです。無名関数を変数に割り当て、その変数を使用して関数を呼び出すこともできます。

4. ジェネレータ

ジェネレーターは Python では理解しにくい概念です。ジェネレーターは Python で導入された 2 つの強力な機能の 1 つでもあります (もう 1 つの機能は何か想像してみてください。そうです、デコレータです)。

今日は、その簡単な例、フィボナッチ数列の実装を見てみましょう。

ジェネレータを使用する関数:

2 番目のメソッドのコードがはるかにシンプルになっているかどうかを確認してください。これが yield キーワードの魅力です。

関数定義に yield キーワードが含まれている場合、この関数は通常の関数ではなく、ジェネレーター関数になります。これを印刷して確認します。

  1. 印刷(fac2(10))
  2. >>><ジェネレータ オブジェクト fac2 ( 0x026958F0)>

ジェネレータ関数の実行フローは、通常の関数の実行フローとは大きく異なります。

  • 関数は順番に実行され、return ステートメントまたは関数ステートメントの最後の行に到達すると戻ります。
  • ジェネレーターとなる関数は、対応する反復操作が実行されたときにのみ実行されます。通常は for と組み合わせて使用​​されます (sum()、list() と組み合わせても使用されます)。
  • next() が呼び出されるたびに実行され、yield ステートメントに遭遇すると戻ります。再度実行されると、前回戻った yield ステートメントから続行されます。

さて、上記は Python の非常に魔法のようなコードです。これらを読んだ後、Python がもっと好きになるのではないでしょうか。実際、シンプルさと効率性は Python の代名詞です。

<<:  人工知能技術の応用方向

>>:  AIが死海文書の秘密を解読:筆写者は1人だけではなかった

ブログ    
ブログ    
ブログ    

推薦する

人工知能に基づく顔認識技術と評価システムの研究

[[428633]] 0 はじめに人工知能と光学画像デバイスの急速な発展に伴い、高度なハードウェア基...

AIは現実世界に対応できる準備ができているでしょうか?

人工知能技術は、今日の状況に対応し、現実世界に適用するのに苦労しています。テクノロジーに興味があるな...

企業はどのように AI を活用してビジネスの成長を促進できるのでしょうか?

人工知能 (AI) の導入によって得られる潜在的な利益を考えると、企業は傍観者でいるわけにはいきませ...

Gonex CEO ウェン・メンフェイ氏との独占インタビュー: アプリケーションの分野では、モデル自体よりも意図の認識の方が重要です。

ゲスト | ウェン・メンフェイインタビュー&執筆 | Yun Zhao潮が満ちると、何千もの船が動き...

...

ロボットが人間を攻撃、しかしテスラはそのニュースを隠蔽?マスク氏はこう答えた。

テスラのオプティマスロボットが労働者を攻撃? !マスク氏は噂を払拭するために緊急で姿を現し、事実を歪...

AI仮想読書機、ジェスチャー認識+OCR+音声TTS

こんにちは、みんな。最近はAIGCのコンテンツを研究しており、公式アカウントのコンテンツを長い間更新...

インテリジェントソフトウェアが現代の製造業に革命を起こす

テクノロジーが進歩を左右するこの急速に変化する時代において、製造業界は大きな変化を遂げています。この...

DeepMindの最新研究がNatureに掲載され、AI時代の科学研究の新たなパラダイムを明らかにし、未知の領域を探索し、新たな課題をもたらしている。

AIがさまざまな科学分野と融合するにつれ、可能性と課題に満ちた技術革命が起こっています。 AI は...

「初の常温常圧超伝導体」に対する共同研究者の反応:内容に欠陥あり

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

MSNを覚えていますか?マイクロソフトはAIを使って人間を排除している

海外メディアの報道によると、マイクロソフトは、自動化や人工知能によるコンテンツ決定に向けた同社の取り...

質問応答をより自然にする - コピーと検索メカニズムに基づく自然な回答生成システムの研究

機械を人間と同じくらい賢くすることは、常に研究者の目標でした。知能の概念を正確に定義することは難しい...

...

光量子コンピュータ「九章3号」が発売されました!スーパーコンピューターの1000億倍の速さ、USTCのパン・ジアンウェイ氏のチームより

私の国の量子コンピューティングは新たな進歩をもたらしました。 USTC公式ウェブサイトからのニュース...