Pythonには標準でlist型やdict型などのデータ型、ソートや探索の便利なアルゴリズムが実装されており、ライブラリも充実しています。基本文法とライブラリの使い方を学習するだけで、ある程度プログラムを作成できるようになります。ところが複雑な問題に直面したとき、初歩的な知識だけでは立ちどころに行き詰ります。問題をずばり解決する機能やライブラリがあるとは限りません。さまざまな実装方法、機能、ライブラリから、最適なものを選び、組み合わせる必要が出てくるかもしれません。こういったとき、プログラム構造の理解が必要で、なかでもアルゴリズムとデータ構造が重要な要素になります。本書はこのふたつを徹底的にかみ砕いて解説し、ときに開発現場で使用されるテクニックや考え方も盛り込むことで、読者を深い理解へと導きます。