find100

日常の中で見つけた面白そうなことを発信します

MENU

独学プログラマーでデータ構造とアルゴリズムを学んでみた

いよいよ本書も残すところわずかとなり、第21章に入りました。

前回の記事はこちらです
find314.hatenablog.com

21章 データ構造

f:id:find314:20190202191404j:plain

この章では新たなデータ構造(辞書とかリストとかそういう系)に触れています。

では、257ページのチャレンジ問題の自分のコードを載せておきます。

#charange21
#Q1
class Stack:
    def __init__(self):
        self.items = []

    def is_empty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        last = len(self.items)-1
        return self.items[last]

    def size(self):
        return len(self.items)


stack = Stack()
for c in "yesterday":
    stack.push(c)


reversed_string = ""


for i in range(len(stack.items)):
    reversed_string += stack.pop()


print(reversed_string)

#Q2
numbers = [1, 2, 3, 4, 5]
reverse_numbers = []

for j in numbers:
    stack.push(j)
for k in range(len(stack.items)):
    reverse_numbers.append(stack.pop())

print(reverse_numbers)

第22章 アルゴリズム

f:id:find314:20190330162005j:plain

この章ではある問題を解決したい時にどのように関数などを書いていけばいいのかの例が示されています。

まぁこの章で一番実感したのは組み込みモジュール便利や!って感じです。

チャレンジ問題もありますけど別に他で出来ると思うので特に触れません。

これ以降の23章からは知ってると役に立つミニコーナー的なところでまとめるのはなんかアレなので独学プログラマーの書評?はここまでにします。

まとめ

この本を買って、読み終えるのに3週間ちょっとかかりました。
ただ、あらかじめプロゲートで基礎をさらっていないともっと時間がかかったのかなぁと思います。

まぁもうこれでPythonの基礎についての本は買わなくても良いかなと。

本書を読んでいて便利なツールがあるリンクが載ってるのが助かりました。

あと最後の方のコードのURLを見てみると「本を買ってくれてありがとう。何かあったら気にせずに私(著者のコーリー・アルソフ)にメール送ってね」みたいなことが書いてありました。
実際にメールして返信が来たらちょっと感動ですね。