Pythonシリーズチュートリアル162-より複雑なリスト内包

友人の皆さん、転載が必要な場合は、出典をお知らせください: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']
复制代码

おすすめ

転載: juejin.im/post/7078495113499901983