解説
送ったパケットは、それぞれ違う経路を通ることがあるため、受け取る順番が送った順番と一致するとは限りません。だからこそ各パケットには通し番号が付いています。
受信側は、届いたパケットを番号順に並べ直す(ソートする)ことで、元のメッセージを正しく復元できます。ここでは random でわざと順番を入れ替え、その後 sorted で番号順に戻します。
番号が「再構成のカギ」であることが分かります。
書き方
・import random / random.seed(7): 乱数を初期化し再現性を確保。random.shuffle(リスト): 要素をその場でシャッフル。
・[{...} for i, d in enumerate(リスト)]: enumerate で添字 i と値 d を同時に取り、辞書のリストを内包表記で作る。
・リスト[:]: リストの浅いコピーを作る。
・sorted(リスト, key=lambda p: p["no"]): no をキーに番号順へ並べ替える。
・"".join(...): 文字列を連結して結合する。書いて動かす
この回の課題
わざと順番を入れ替えたパケットを通し番号で並べ直し、元のメッセージを復元してみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
もっと本格的に使うなら
Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。