関数に基づくリストの分割

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチャレンジでは、与えられたフィルタ関数の結果に基づいてリストを 2 つのグループに分割する Python 関数を書きます。これは、特に大規模なデータセットを扱う際に、プログラミングにおける一般的なタスクです。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/list_comprehensions("List Comprehensions") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") subgraph Lab Skills python/comments -.-> lab-13590{{"関数に基づくリストの分割"}} python/conditional_statements -.-> lab-13590{{"関数に基づくリストの分割"}} python/for_loops -.-> lab-13590{{"関数に基づくリストの分割"}} python/list_comprehensions -.-> lab-13590{{"関数に基づくリストの分割"}} python/lists -.-> lab-13590{{"関数に基づくリストの分割"}} python/tuples -.-> lab-13590{{"関数に基づくリストの分割"}} python/function_definition -.-> lab-13590{{"関数に基づくリストの分割"}} python/lambda_functions -.-> lab-13590{{"関数に基づくリストの分割"}} end

関数に基づくリストの分割

bifurcate_by(lst, fn) という関数を書きます。この関数は、リスト lst とフィルタ関数 fn を引数とします。この関数は、フィルタ関数の結果に基づいてリストを 2 つのグループに分割する必要があります。フィルタ関数が要素に対して真値を返す場合、その要素は最初のグループに追加されます。それ以外の場合、その要素は 2 番目のグループに追加されます。

関数は、2 つのリストのリストを返す必要があります。最初のリストには、フィルタ関数が真値を返したすべての要素が含まれ、2 番目のリストには、フィルタ関数が偽値を返したすべての要素が含まれます。

各要素に対する fn が返す値に基づいて、要素をグループに追加するためにリスト内包表記を使用します。

def bifurcate_by(lst, fn):
  return [
    [x for x in lst if fn(x)],
    [x for x in lst if not fn(x)]
  ]
bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b')
## [ ['beep', 'boop', 'bar'], ['foo'] ]

まとめ

このチャレンジでは、与えられたフィルタ関数の結果に基づいてリストを 2 つのグループに分割する方法を学びました。各要素に対するフィルタ関数が返す値に基づいて、要素をグループに追加するためにリスト内包表記を使用しました。これは、特に大規模なデータセットを扱う際に、プログラミングにおいて役立つ技術です。