菜犬のPython学習ノート第二章リストと元組


  • Pythonの最も基本的なデータ構造はシーケンスであり、シーケンス内の各要素にはシーケンス番号が割り当てられている.すなわち、要素の位置はインデックスとも呼ばれる.Pythonに組み込まれているシーケンスタイプ:リスト(list)、メタグループ(tuple)、(Unicode)文字列(string)、bufferオブジェクト、xrangeオブジェクト.
  • リストとメタグループの主な違いは、リストは変更可能であり、メタグループは変更できないため、リストは通常、要素を変更する必要がある場合に使用され、メタグループはシーケンスの変更を許可しない場合に使用される.
  • 汎用シーケンス操作:1)インデックスs[3]は、インデックスによってシーケンスから要素を取得する.インデックスが0の最初の要素です.インデックスが負の場合、シーケンスの末尾から前にカウントされ、最後の要素のインデックスは-1になります.シーケンスのフォント値と戻り値がシーケンスの関数にインデックスを直接使用できます.2)スライスs[3:5]は、スライスによってシーケンスから1つの範囲内の要素にアクセスし、この範囲のシーケンスを返す.「:」で区切られた2つのインデックスによってスライス操作が実行され、左インデックスの値は右インデックスの値に含まれず(左閉右開)、左インデックスが右インデックス以上の場合は空のシーケンスが返されます.スライスが最初の要素から始まると、左インデックスを省略することができます.最後の要素が終了すると、右インデックスを省略できます.同時に左右のインデックスを省略すると元のシーケンスが得られる.3)ステップ長(step length)s[2:8:2]は、スライス時にステップ長パラメータを増加させることによって、ステップ長に従ってシーケンスを巡回することができる.ステップパラメータは、2つのインデックスの後に':'で区切られ、通常のスライス操作ではステップのデフォルトは1に設定されます.ステップ長は0ではありませんが、負の値にすることができます.この場合、左インデックスは右インデックスより大きく、右から左インデックスになります.4)シーケンス加算(adding sequence)s1+s2は、‘+’を使用して2つのシーケンスを加算することによって、新しい合成シーケンスを返す.一般に、2つの異なるタイプのシーケンスを加算することはできません.5)乗算(multiplication)s=[None]*nは、シーケンスに1つの数字nを乗算することによって、元のシーケンスn回を繰り返す新しいシーケンスを得る.6)in操作により、1つの値がシーケンス内にあるかどうかをチェックし、文字列に対してサブストリングをチェックし、この操作はブール値を返す.7)len()関数は、シーケンスに含まれる要素の数を返します.min()関数とmax()関数は、シーケンス内の最小要素と最大要素をそれぞれ返します.
  • リストの要素は','で区切られ、カッコ'[]'に書かれています.リスト内の要素のタイプは異なりますが、リストをネストすることもできます.リストは可変(mutable)であるため、リストの内容を変更することができる.
  • NoneはPython内蔵値として何も表示されていません.乗算とNoneの組み合わせにより、必要なサイズの空のテーブルを初期化できます.
  • list()関数は、シーケンスを受け入れてリストを返すことができ、実際にはlist()もタイプオブジェクトです.
  • 基本リストアクション:1)要素割り当ては、インデックスおよび割り当て操作によってリスト内の要素の値を変更できます.2)削除要素delとインデックスによってリスト内の要素を削除する3)スライス割り当てと削除スライス操作を組み合わせてスライス割り当てと削除を行うことができ、単一の要素割り当てとは異なり、スライス割り当てはリストを使用して割り当てられる.なお、スライス付与値は、要素挿入(左インデックスを右インデックスに等しくする)または要素削除(空のリストで付与)
  • を行うことができる.
  • メソッド(method)は、オブジェクトと密接に関連する関数であり、メソッドの呼び出し方法はobject.method(arguments)である.リストには、コンテンツをチェックまたは変更する方法があります.
  • リストメソッド1)appendはappendによりリスト後に新しい要素を追加することができる.appendは、変更された新しいリストを返すのではなく、元のリストの値を直接変更します.2)countはcountによって同じ要素値のリスト内の個数を計算することができる.3)extendは,extendによりリスト後に複数の要素を同時に追加することができ,そのパラメータはこれらの要素からなるリストである.これはシーケンス加算と同様ですが、シーケンス加算は新しい合成シーケンスを返し、extendは元のシーケンスを変更します.extendの機能は、スライス付与値を用いて実現することもできる.4)indexは、indexによって指定された要素をリスト内で検索し、その要素の最初の出現位置のインデックス値を返すことができる.5)insertはinsertを介してリストの指定された位置に要素を挿入することができる.6)popはpopによってリスト内の要素を除去することができ、デフォルトでは最後の要素であり、この要素を返す.popは、リストを変更し、値を返す唯一のリストメソッドです.popによりリスト構築スタック(stack)を利用することができ,リストにはpushメソッドはないがappendで代用できる.7)removeリストに最初に表示された指定値をremoveで削除できます.8)reverseは、リスト内の要素をreverseによって逆方向に保存できます.シーケンスを逆方向に保存する必要がある場合は、reversed()関数を使用して反復器を返します.9)sortはsortによって元のリストをソートすることができる.このメソッドは値を返さず、コピーできません.リストは、スライス操作y=x[:]によってコピーされてからソートすることができるが、y=xをこのように付与することはできない.この場合、yとxは同じリストを指す.もう1つの方法はsorted関数を使用することです.高度なソート:1 sortメソッドのパラメータとして独自の比較関数を定義してソートできます.2 sortにはオプションパラメータkeyとreverseがあります.keyは比較関数に似ています.keyに関数を提供して、関数が返すkeyを使用してソートすることができます.reverseは、x.sort(reverse=Ture)のように、ブール値を設定することによって、逆ソートを行うかどうかを決定する.
  • メタグループの要素はカンマ','で区切られ、カッコ'()に含まれます.数字をカンマで区切ると、自動的にメタグループが生成されます.単一の要素を含むメタグループを生成するには、カッコの有無にかかわらず、要素の後に','を追加する必要があります.
  • tuple()関数はlist()関数と類似しており、シーケンスパラメータを取得し、メタグループに変換します.
  • は、2つの理由でメタグループの機能に取って代わることができない:メタグループは、キー値が変更できないため、キーが使用されるときにマッピングおよびセット内で使用することができる.メタグループは、多くの組み込み関数やメソッドの戻りタイプとして、このタイプを処理する必要がある場合があります.