友人の皆さん、転載が必要な場合は、出典をお知らせください:blog.csdn.net/jiangjunsho…
免責事項:人工知能技術の指導中に、多くの学生がPython関連の質問をしてきました。そのため、学生にAI技術の知識を深め、理解を深めてもらうために、この一連のPythonチュートリアルを共有するようアシスタントに依頼しました。 。私は皆を助けることができることを願っています!このPythonチュートリアルは私が作成したものではないため、AIテクノロジーの指導ほど面白くなく、ユーモラスではなく、学ぶのは退屈ですが、知識のポイントはまだ残っているので、読む価値があります。AIテクノロジーを学びたい学生は、クリックして私の教育Webサイトにジャンプできます。PS:この記事を理解していない学生は、最初に前の記事を読んでください。そうすれば、毎日少しずつ学ぶのは難しくありません。
リスト内包表記には、より高度なアプリケーションを含めることができます。たとえば、式内にネストされたforループには、falseをテストする項目を除外するif句を関連付けることができます。ファイルスキャンを実行したいとしますが、文字pで始まる行を収集するだけで済みます。
>>>lines = [line.rstrip() for line in open('script1.py') if line[0] == 'p']
>>>lines
['print(sys.path)','print(2 ** 33)']
复制代码
このif句は、ファイルから読み取られた各行をチェックして、最初の文字がpであるかどうかを確認します。そうでない場合、その行は結果のリストから省略されます。もちろん、これをforループステートメントと同等のものに変換できます。
>>>res = []
>>>for line in open('script1.py'):
... if line[0] == 'p':
... res.append(line.rstrip())
...
>>>res
['print(sys.path)','print(2 ** 33)']
复制代码
これと同等のステートメントも機能しますが、1行ではなく4行を使用するため、実行速度が大幅に低下する可能性があります。
リスト内包表記は、必要に応じてさらに複雑になる可能性があります。たとえば、ネストされたループが含まれている場合や、一連のfor句として記述されている場合があります。たとえば、次の例では、x + y連結リストを作成し、一方の文字列の各xをもう一方の文字列の各yと連結します。
>>>[x + y for x in 'abc' for y in 'lmn']
['al','am','an','bl','bm','bn','cl','cm','cn']
复制代码
以下は、forループに相当します。
>>>res = []
>>>for x in 'abc':
... for y in 'lmn':
... res.append(x + y)
...
>>>res
['al','am','an','bl','bm','bn','cl','cm','cn']
复制代码