Python-シーケンス

3957 ワード

一、概要
Pythonでは,最も基本的なデータ構造はシーケンスである.シーケンス内の各要素には、インデックスと呼ばれる要素の位置であるシーケンス番号が割り当てられます.1番目のインデックスは0で、2番目のインデックスは1です.シーケンスの最後の要素は-1としてマークされ、最後から2番目の要素は-2として分類されます.
Pythonには、リスト、メタグループ、文字列、Unicode文字列、bufferオブジェクト、xrangeオブジェクトなど、6に組み込まれたシーケンスが含まれています.本稿では,リストとメタグループに焦点を当て,リストとメタグループの主な違いは,リストが変更可能であり,メタグループができないことである.
二、汎用シーケンス操作
すべてのシーケンスタイプは、特定の操作を行うことができます.これらの操作には、インデックス(indexing)、スライス(sliceing)、加算(adding)、乗算(multiplying)、要素がシーケンスに属するメンバー(メンバーシップ)であるかどうかを確認することが含まれます.このほか、Pythonにはシーケンスの長さを計算し、最大要素と最小要素を見つける組み込み関数もあります.
        1. 索引
シーケンス内のすべての要素には番号が付けられています.0から増加します.これらの要素は、次のように番号付けで個別にアクセスできます.
>>> greeting = 'Hello'
>>> greeting[0]
'H'
(文字列は文字からなるシーケンスです.)
負数インデックスを使用すると、Pythonは右側、つまり最後の1要素からカウントされます.最後の1つの要素の位置番号は-1です.
>>> greeting[-1]
'o'
文字列のフォント値は、変数を参照する必要がなく、インデックスを直接使用できます.
>>> 'Hello'[1]
'e'
関数呼び出しがシーケンスを返す場合、戻り結果を直接インデックス操作することができる.
>>> fourth = raw_input('Year: ')[3]
Year: 2005
>>> fourth
'5'

        2. スライス
スライス操作を使用して、一定範囲の要素にアクセスします.スライスは、コロンで区切られた2つのインデックスによって実現されます.
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[3:6]
[4, 5, 6]
>>> numbers[0:1]
[1]
の1番目のインデックスは抽出する必要がある部分の1番目の要素の番号であり、最後のインデックスはスライス後の残りの部分の1番目の要素の番号である.(1番目のインデックスの要素はスライス内に含まれ、2番目はスライス内に含まれません.)
スライスの一番左のインデックスが右のインデックスよりも遅くシーケンスに表示される場合、結果は空のシーケンスになります.
>>> numbers[-3:0]
[]
スライス部分にリストの最後の要素を含めることができるように、最後の要素の次の要素に対応するインデックスを境界として、または最後のインデックスを空にすることができます.
>>> numbers[7:10]
[8, 9, 10]
>>> numbers[-3:]
[8, 9, 10]
を空にすると、シーケンスの開始要素にも適用されます.
>>> numbers[:3]
[1, 2, 3]
シーケンス全体をコピーし、両方のインデックスを空にすることができます.
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
       
         3. ステップ
スライスを行う場合は、スライスの開始点と終了点を指定する必要があります.もう1つのパラメータであるステップ長は、通常、暗黙的に設定されます.通常のスライスでは、ステップ長は1です.
>>> numbers[0:10:1]
[1, 2, 3, 4 ,5 , 6, 7, 8, 9, 10]
ステップ長が1より大きい数に設定されている場合、いくつかの要素はスキップされます.
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[3, 6, 3]
[4]
ステップ長は0ではありません.それは下には実行されません.ただし、ステップ長は負の数、すなわち右から左に要素を抽出できます.
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[0:10:-2]
[]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
ステップ長として負の数を使用する場合は、開始点(開始インデックス)を終了点より大きくする必要があります.
         
         4. シーケンス加算
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello, ' + 'world!'
'Hello, world!'
の2つの同じタイプのシーケンスが接続操作を行うことができます.
>>> [1, 2, 3] + 'world!'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list

         5. 乗算#ジョウサン#
数値xにシーケンスを乗算すると、新しいシーケンスが生成され、新しいシーケンスでは元のシーケンスがx回繰り返されます.
>>> 'python' * 5
'pythonpythonpythonpythonpython'

         6. メンバーシップ
値がシーケンスにあるかどうかを確認するには、in演算子を使用します.
>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False

          7. 長さ、最小値、最大値
len関数は、シーケンスに含まれる要素の数、min関数、max関数は、シーケンスの最大および最小の要素を返します.
>>> numbers = [100, 34, 678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34
>>> max(2, 3)
3
>>> min(9, 3, 2, 5)
2