平素よりお世話になっております。
現在、pythonの参考書を使ってデータ構造について学んでいるのですが、
ソートをするときにタプルパッキング、シーケンスパッキングたる用語が出てきました。
しかし、自分の理解力が及ばず用語解説が分からなかったので質問させていただきました。
一応、これらの機能を使わず動くソースも作ってみましたが、できることなら上記の方法を理解して使いたいと思います。回答よろしくお願いします。
以下、解説文等を載せます。
右辺が複数の変数からなる代入はタプルパッキングと呼ばれ、自動的にタプルにまとめて代入してくれる機能である。
左辺が複数の変数からなる代入はシーケンスアンパッキングと呼ばれ、右辺のシーケンスオブジェクトの要素を自動的に変数に分けて代入する機能である。
この2つの機能を同時に使うことで複数の代入文を同時に実行できている。
def sort(A): for i in range(0,len(A)-1): select_min(A,i) def select_min(A,i): min = i for j in range(i+1,len(A)): if A[min] > A[j]: min = j A[i] , A[min] = A[min] , A[i] A=[8,4,3,9,6] sort(A) print(A)
そのタプルパッキングとシーケンスアンパッキングを使うことが次の文とのこと
A[i] , A[min] = A[min] , A[i]
以下、個人的な作業したこと
ここで、何が行われているか確認するため次のコードに変更し、数値の入れ替わりを確認しました。
def sort(A): for i in range(0,len(A)-1): select_min(A,i) def select_min(A,i): min = i for j in range(i+1,len(A)): if A[min] > A[j]: min = j print(A[i],A[min]) A[i] , A[min] = A[min] , A[i] print(A[i],A[min]) A=[8,4,3,9,6] sort(A) print(A)
入れ替わりが確認できたため、同じ結果になるコードも作ってみました。
def sort(A): for i in range(0,len(A)-1): select_min(A,i) def select_min(A,i): min = i for j in range(i+1,len(A)): if A[min] > A[j]: min = j z=A[i];A[i]=A[min];A[min]=z A=[8,4,3,9,6] sort(A) print(A)
回答2件
あなたの回答
tips
プレビュー