ホームページ >バックエンド開発 >Python チュートリアル >Python は For ループが苦手 – それがまさに私たちが気に入っている理由です
Python はプログラミング言語界のエレガントな猫です。独立していて洗練されており、実際に必要になるまでは必要ないように見えます。この特質は、for ループ に最も顕著に反映されており、瞬時に天才であると同時に馬鹿であるように感じさせることができます。
Python の for ループが悪いというわけではありません。自分よりも知っているふりをするのが上手すぎるだけです。
ほとんどのプログラミング言語の For ループは直感的です。 10まで数えたいですか?問題ありません。賢いと思わせるための定型コードをたくさん提供してください。
C 言語で を記述する方法:
<code class="language-c">for (int i = 0; i < 10; i++) { printf("%d\n", i); }</code>
シンプルで予測可能であり、IQ を尊重します。
そして Python はこう言います:
「なぜわざわざ i を定義したり、範囲を指定したり、基本的な計算をしたりする必要があるのでしょうか。私がすべてをあなたの前に並べて、偽のプログラマーになることがどのようなものか体験してみましょう。」
Python バージョン:
<code class="language-python">for i in range(10): print(i)</code>
それだけです。宣言や中括弧はなく、ただ「雰囲気」だけです。 Python の for ループは非常に単純なので、少し間違っているように感じます。
果物のリストがあり、それを印刷したいとします。
C 言語バージョン (繰り返しになりますが、非常に敬意を表します):
<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"}; for (int i = 0; i < 3; i++) { printf("%s\n", fruits[i]); }</code>
Python バージョン:
<code class="language-python">fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)</code>
何か気づきましたか? Python は、インデックス を提供することさえしません。フリスビーのように要素全体を投げて、「さあ、大事にしてください。
」と言うだけです。リストに手動でインデックスを付けて、創意工夫を示してみませんか?残念だ。 Python はユーザーが何を望んでいるのかをすでに知っており、それを直接ユーザーに提供します。
Python の リスト内包表記 は for ループの墓場です。
すべての数値を 2 倍にした新しいリストを作成したいですか?他の言語では、これには 3 ~ 4 行のコードが必要になります。 Python は 1 行のコーディング スキルを簡単に実証します。
<code class="language-python">doubled = [x * 2 for x in range(10)]</code>
これは効率的であるだけでなく、凡人には決して理解できない秘密のプログラミング言語でコードを書いているような気分にもなります。しかし、その代償は次のとおりです。 for ループは、不可解なクロスワード パズルのように見えます。
例:
<code class="language-python">results = [f"Employee-{i}" for i in range(10) if i % 2 == 0]</code>
おめでとうございます!コードを 1 行書いただけで、2 週間後にはそれが何を意味するのかさえわかりません。
Python の for ループも、微妙な方法でユーザーを裏切ることを好みます。これは典型的な間違いです:
予期しない変数のオーバーライド
<code class="language-c">for (int i = 0; i < 10; i++) { printf("%d\n", i); }</code>
ちょっと待って、何?全部「パイナップル」に置き換えてませんか?いいえ! fruit
は単なる一時変数であるため、Python は隅で笑います。実際のリストは変更されません。
一方、JavaScript 開発者は、可変スコープの問題によって運用システム全体がダウンする可能性があることを知っているので、内心くすくす笑っています。
インデックスと値の両方が必要な場合があります。 Python を使用すると、他の言語のように退屈な i
を使用することになる可能性があります。ただし、enumerate() が提供されます。これは、プログラミング関数というよりも企業用語のように聞こえます。
<code class="language-python">for i in range(10): print(i)</code>
「列挙する」。本当に? Python、これは取締役会の会議ではありません。ただリラックスしてください。
リストをループ中にリストを変更したいですか? Python はあなたをぼんやりと見てこう言います:
「あなたは考えすぎです。」
例:
<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"}; for (int i = 0; i < 3; i++) { printf("%s\n", fruits[i]); }</code>
Python が途中で失われたため、リストに欠落している要素があります。 Python がウェイターであれば、これは食事を終える前にテーブルを片付けることに相当します。
Python で古典的な無限ループを書いてみます。ご存知のように、楽しみのためです。 C言語での書き方は以下の通りです:
<code class="language-python">fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)</code>
Python のバージョンは次のとおりです:
<code class="language-python">doubled = [x * 2 for x in range(10)]</code>
確かに機能しますが、奇妙に感じます。 Python は古典的な無限ループをエミュレートしようともしません。それはただ...無限の真実です。
結論: Python の for ループは悪くありません - それができないのは私たちだけです
実のところ、Python の for ループはそれほど悪くありません。ただ私たち自身が甘やかされているだけなのです。 Python のループは非常に直観的で簡潔かつ強力であるため、手動でインデックスを追跡したり、セグメンテーション違反に対処したりする煩わしさを忘れてしまいます。
それで、次回 Python の for ループについて文句を言うときは、次のことを思い出してください: Python はひどいものではありません。手を握るのは疲れるだけです。
以上がPython は For ループが苦手 – それがまさに私たちが気に入っている理由ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。