python学習ノート2:データ構造

5467 ワード

pythonデータ構造は、数値または文字、または他のデータ構造であってもよい、要素を番号付けするなど、何らかの方法で整理されたデータ要素の集合である.
pythonでは、最も基本的なデータ構造はシーケンスです.
シーケンス内の各要素には、シーケンス番号、すなわち要素の位置、インデックスが割り当てられます.
シーケンスの概要
pythonには6種類の組み込みシーケンスが含まれています
例:
edward = ['Edward Gumby',42]

索引
シーケンス内のすべての要素には番号が付けられています.0から増加します.
greeting = 'hello'
greeting[0]
  :
h

スライス
インデックスを使用してアクセスする単一の要素と同様に、スライス操作を使用して一定範囲の要素にアクセスできます.スライスは、コロンで区切られた2つのインデックスによって実現されます.
tag = '<a href="http://www.python.org">Python web sit</a>'
tag[9:30]
tag[32:-4]

基本的なリスト操作
1、変更リスト:要素割付
x = [1,1,1]
x[1] = 2
x
  :[1,2,1]

2、要素の削除
names = ['Alice','Beth','Cecil','Dee-Dee']
del names[2]
names
  :['Alice','Beth','Dee-Dee']

3、スライス割付
name = list('Perl')
name
name[2:] = list('ar')
name
  :['P','e','a','r']
スライス割付文は、既存の要素を置き換える必要がなく、新しい要素を挿入できます.
numbers = [1,5]
numbers[1:1] = [2,3,4]
numbers
  :[1,2,3,4,5]

リストメソッド
メソッドは、リスト、数値、文字列、または他のタイプのオブジェクトである可能性のある特定のオブジェクトに密接に関連する関数です.一般的に、メソッドは次のように呼び出されます.
オブジェクトメソッド(パラメータ)
メソッド名の前にオブジェクトが配置され、両者の間にポイント番号で区切られている以外は、メソッド呼び出しは関数呼び出しと似ています.
1、append新たな対象を追加
appendメソッドは、リストの最後に新しいオブジェクトを追加するために使用されます.
lst = [1,2,3]
lst.append(4)
lst
  :[1,2,3,4]

2、countはある要素の回数を統計する
countメソッドは、ある要素がリストに表示された回数を統計します.
['to' 'be' 'or' 'not' 'to' 'be'].count('to')

3、extendリストの末尾に一括追加
extendメソッドは、リストの最後に別のシーケンスの複数の値を一度に追加できます.(新しいリストで既存のリストを拡張できます)
a = [1,2,3]
b = [4,5,6]
a.extend(b)
a
  :[1,2,3,4,5,6]

スライス割り当てを使用して、同じ結果を実現します.
a = [1,2,3]
b = [4,5,6]
a[len(a):] = b
a
      

4、indexインデックス位置
indexメソッドは、リスト内の値の最初の一致するインデックスの位置を特定するために使用されます.
knights = ['We','are','the','knights','who','say','ni']
knights.index('who')

5、insert挿入
Insertメソッドは、オブジェクトをリストに挿入するために使用されます.
numbers = [1,2,3,4,5,6,7]
numbers.insert(3,'four')
  :
[1,2,3,'four',5,6,7]
extend法と同様にinsert法の動作もスライス付与で実現できる
6、pop除去
popメソッドは、リスト内の要素(デフォルトは最後)を削除し、その要素の値を返します.
x = [1,2,3]
x.pop()
3
x
[1,2]

7、remove除去
removeメソッドは、リスト内の値の最初の一致を除去するために使用されます.
x = ['to','be','or','not','to','be']
x.remove('be')

8、reverse逆方向
reverseメソッドリストの要素を逆方向に保存
9、sortソート
sortメソッドは、元の場所でリストをソートするために使用されます.「元の場所のソート」では、元のリストのリストを変更し、単純にソートされたリストのコピーを返すのではなく、要素を一定の順序でソートできるようにします.
x = [4,6,2,1,7,9]
x.sort()
x
  :
[1,2,4,6,7,9]

=====================
x = [4,6,2,1,7,9]
y = x[:]
y.sort()
y
         

再度x[:]を呼び出すと、Xのすべての要素を含むスライスが得られます.
=====================
もう1つのソートされたリストのコピーを取得する方法は、sorted関数を使用することです.
x = [4,6,,2,1,7,9]
y = sorted(x.)

10、高度なソート
要素をsort関数のデフォルトではなく、pythonのデフォルトのソートルールに基づいて要素を昇順にソートする場合は、compare(x,y)の形式で比較関数をカスタマイズできます.
compare(x,y)関数はxyで正、x=yで0を返します.関数を定義したらsortメソッドをパラメータとして提供できます.
ビルド関数
cmpは、比較関数のデフォルトの実装方法を提供します.
cmp(42,32)
  :1
cmp(99,100)
  :-1
cmp(10,10)
  :0
numbers = [5,2,9,7]
numbers.sort(cmp)
numbers
[2,5,7,9]

sortメソッドには、keyとreverseの2つのオプションパラメータがあります.それらを使用する場合は、名前で指定する必要があります.
x = ['aardvark','abalone','acme','add','aerate']
x.sort(key=len)
x
  :
['add','acme','aerate','abalone','aardvark']

もう1つのキーワードパラメータreverseは、リストが逆ソートされる必要があるかどうかを示す単純なブール値(TrueまたはFalse)です.
x = [4,6,2,1,7,9]
x.sort(reverse=True)
x
  :
[9,7,6,4,2,1]

cmp,key,reverseパラメータはsorted関数に用いることができる.多くの場合、cmpまたはkeyにカスタム関数を提供することは非常に有用です.
タプルタプル:可変シーケンスふへんけいれつ
メタグループはリストと同様にシーケンスです.唯一の違いは、メタグループが変更できないことです.
メタグループを作成する構文は簡単です.カンマで値を区切った場合、自動的にメタグループを作成します.
1,2,3
(1,2,3)

タプルもかっこで囲まれています.
(1,2,3)

空のタプルは、内容を含まない2つのカッコで表すことができます.
()

では、値を含むメタグループをどのように実現するか.実装方法:値が1つであっても価格カンマが必要
42,
3*(40+2,)
  :
(42,42,42)

1、tuple関数
tuple関数の機能はlist関数と基本的に同じです.1つのシーケンスを参照してメタグループに変換します.パラメータがメタグループの場合、そのパラメータはそのまま返されます.
tuple([1,2,3])
  :(1,2,3)
tuple('abc')
  :('a','b','c')
tuple((1,2,3))
  :(1,2,3)

新しい関数
cmp(x,y)
2つの値の比較
len(seq)
戻りシーケンスの長さ
list(seq)
シーケンスをリストに変換
max(args)
シーケンスまたはパラメータセットの最大値を返します.
min(args)
シーケンスまたはパラメータセットの最小値を返します.
reversed(seq)
シーケンスの逆反復
sorted(seq)
ソートされたseqを含むすべての要素のリストを返します.
tuple(seq)
シーケンスをメタグループに変換